forked from sim0n00ps/OF-DL
UI improvements
This commit is contained in:
parent
34ad00ce03
commit
ac4061f1ca
@ -4,30 +4,113 @@
|
|||||||
RequestedThemeVariant="Light"
|
RequestedThemeVariant="Light"
|
||||||
x:Class="OF_DL.Gui.App">
|
x:Class="OF_DL.Gui.App">
|
||||||
<Application.Resources>
|
<Application.Resources>
|
||||||
<SolidColorBrush x:Key="WindowBackgroundBrush" Color="#EEF3FB" />
|
<ResourceDictionary>
|
||||||
|
<ResourceDictionary.ThemeDictionaries>
|
||||||
|
<!-- Light Theme -->
|
||||||
|
<ResourceDictionary x:Key="Light">
|
||||||
|
<SolidColorBrush x:Key="WindowBackgroundBrush" Color="#F8FAFC" />
|
||||||
<SolidColorBrush x:Key="SurfaceBackgroundBrush" Color="#FFFFFF" />
|
<SolidColorBrush x:Key="SurfaceBackgroundBrush" Color="#FFFFFF" />
|
||||||
<SolidColorBrush x:Key="SurfaceBorderBrush" Color="#DDE5F3" />
|
<SolidColorBrush x:Key="SurfaceBorderBrush" Color="#E2E8F0" />
|
||||||
<SolidColorBrush x:Key="PrimaryButtonBackgroundBrush" Color="#2E6EEA" />
|
|
||||||
|
<!-- Primary Button -->
|
||||||
|
<SolidColorBrush x:Key="PrimaryButtonBackgroundBrush" Color="#3B82F6" />
|
||||||
|
<SolidColorBrush x:Key="PrimaryButtonBackgroundHoverBrush" Color="#2563EB" />
|
||||||
|
<SolidColorBrush x:Key="PrimaryButtonBackgroundPressedBrush" Color="#1D4ED8" />
|
||||||
<SolidColorBrush x:Key="PrimaryButtonForegroundBrush" Color="#FFFFFF" />
|
<SolidColorBrush x:Key="PrimaryButtonForegroundBrush" Color="#FFFFFF" />
|
||||||
|
|
||||||
|
<!-- Secondary Button -->
|
||||||
<SolidColorBrush x:Key="SecondaryButtonBackgroundBrush" Color="#FFFFFF" />
|
<SolidColorBrush x:Key="SecondaryButtonBackgroundBrush" Color="#FFFFFF" />
|
||||||
<SolidColorBrush x:Key="SecondaryButtonForegroundBrush" Color="#1F2A44" />
|
<SolidColorBrush x:Key="SecondaryButtonBackgroundHoverBrush" Color="#F1F5F9" />
|
||||||
<SolidColorBrush x:Key="SecondaryButtonBorderBrush" Color="#CFD9EB" />
|
<SolidColorBrush x:Key="SecondaryButtonBackgroundPressedBrush" Color="#E2E8F0" />
|
||||||
<SolidColorBrush x:Key="TopBarBackgroundBrush" Color="#DDEAFF" />
|
<SolidColorBrush x:Key="SecondaryButtonForegroundBrush" Color="#1E293B" />
|
||||||
<SolidColorBrush x:Key="TopBarBorderBrush" Color="#CFD9EB" />
|
<SolidColorBrush x:Key="SecondaryButtonBorderBrush" Color="#CBD5E1" />
|
||||||
<SolidColorBrush x:Key="TopBarTextBrush" Color="#304261" />
|
|
||||||
<SolidColorBrush x:Key="TextPrimaryBrush" Color="#1F2A44" />
|
<!-- Top Bar -->
|
||||||
<SolidColorBrush x:Key="TextSecondaryBrush" Color="#4A5B78" />
|
<SolidColorBrush x:Key="TopBarBackgroundBrush" Color="#EFF6FF" />
|
||||||
<SolidColorBrush x:Key="HelpBadgeBackgroundBrush" Color="#EAF0FB" />
|
<SolidColorBrush x:Key="TopBarBorderBrush" Color="#DBEAFE" />
|
||||||
<SolidColorBrush x:Key="HelpBadgeBorderBrush" Color="#C5D4EC" />
|
<SolidColorBrush x:Key="TopBarTextBrush" Color="#1E40AF" />
|
||||||
<SolidColorBrush x:Key="ErrorTextBrush" Color="#FF5A5A" />
|
|
||||||
<SolidColorBrush x:Key="PreviewBackgroundBrush" Color="#F5F8FE" />
|
<!-- Text Colors -->
|
||||||
<SolidColorBrush x:Key="PreviewBorderBrush" Color="#D8E3F4" />
|
<SolidColorBrush x:Key="TextPrimaryBrush" Color="#0F172A" />
|
||||||
<SolidColorBrush x:Key="DangerSoftBackgroundBrush" Color="#FFE8E8" />
|
<SolidColorBrush x:Key="TextSecondaryBrush" Color="#475569" />
|
||||||
<SolidColorBrush x:Key="DangerSoftBorderBrush" Color="#E8C5C5" />
|
|
||||||
<SolidColorBrush x:Key="DangerButtonBackgroundBrush" Color="#D84E4E" />
|
<!-- Help Badge -->
|
||||||
<SolidColorBrush x:Key="OverlayBackgroundBrush" Color="#80000000" />
|
<SolidColorBrush x:Key="HelpBadgeBackgroundBrush" Color="#EFF6FF" />
|
||||||
|
<SolidColorBrush x:Key="HelpBadgeBorderBrush" Color="#BFDBFE" />
|
||||||
|
|
||||||
|
<!-- Error -->
|
||||||
|
<SolidColorBrush x:Key="ErrorTextBrush" Color="#EF4444" />
|
||||||
|
|
||||||
|
<!-- Preview/Item Background -->
|
||||||
|
<SolidColorBrush x:Key="PreviewBackgroundBrush" Color="#F8FAFC" />
|
||||||
|
<SolidColorBrush x:Key="PreviewBorderBrush" Color="#E2E8F0" />
|
||||||
|
|
||||||
|
<!-- Danger Button -->
|
||||||
|
<SolidColorBrush x:Key="DangerSoftBackgroundBrush" Color="#FEE2E2" />
|
||||||
|
<SolidColorBrush x:Key="DangerSoftBorderBrush" Color="#FECACA" />
|
||||||
|
<SolidColorBrush x:Key="DangerButtonBackgroundBrush" Color="#EF4444" />
|
||||||
|
<SolidColorBrush x:Key="DangerButtonBackgroundHoverBrush" Color="#DC2626" />
|
||||||
|
<SolidColorBrush x:Key="DangerButtonBackgroundPressedBrush" Color="#B91C1C" />
|
||||||
|
|
||||||
|
<!-- Modal -->
|
||||||
|
<SolidColorBrush x:Key="OverlayBackgroundBrush" Color="#99000000" />
|
||||||
<SolidColorBrush x:Key="ModalBackgroundBrush" Color="#FFFFFF" />
|
<SolidColorBrush x:Key="ModalBackgroundBrush" Color="#FFFFFF" />
|
||||||
<SolidColorBrush x:Key="ModalBorderBrush" Color="#DDE5F3" />
|
<SolidColorBrush x:Key="ModalBorderBrush" Color="#E2E8F0" />
|
||||||
|
</ResourceDictionary>
|
||||||
|
|
||||||
|
<!-- Dark Theme -->
|
||||||
|
<ResourceDictionary x:Key="Dark">
|
||||||
|
<SolidColorBrush x:Key="WindowBackgroundBrush" Color="#0F172A" />
|
||||||
|
<SolidColorBrush x:Key="SurfaceBackgroundBrush" Color="#1E293B" />
|
||||||
|
<SolidColorBrush x:Key="SurfaceBorderBrush" Color="#334155" />
|
||||||
|
|
||||||
|
<!-- Primary Button -->
|
||||||
|
<SolidColorBrush x:Key="PrimaryButtonBackgroundBrush" Color="#3B82F6" />
|
||||||
|
<SolidColorBrush x:Key="PrimaryButtonBackgroundHoverBrush" Color="#2563EB" />
|
||||||
|
<SolidColorBrush x:Key="PrimaryButtonBackgroundPressedBrush" Color="#1D4ED8" />
|
||||||
|
<SolidColorBrush x:Key="PrimaryButtonForegroundBrush" Color="#FFFFFF" />
|
||||||
|
|
||||||
|
<!-- Secondary Button - Fixed for dark theme -->
|
||||||
|
<SolidColorBrush x:Key="SecondaryButtonBackgroundBrush" Color="#334155" />
|
||||||
|
<SolidColorBrush x:Key="SecondaryButtonBackgroundHoverBrush" Color="#475569" />
|
||||||
|
<SolidColorBrush x:Key="SecondaryButtonBackgroundPressedBrush" Color="#1E293B" />
|
||||||
|
<SolidColorBrush x:Key="SecondaryButtonForegroundBrush" Color="#F1F5F9" />
|
||||||
|
<SolidColorBrush x:Key="SecondaryButtonBorderBrush" Color="#475569" />
|
||||||
|
|
||||||
|
<!-- Top Bar -->
|
||||||
|
<SolidColorBrush x:Key="TopBarBackgroundBrush" Color="#1E293B" />
|
||||||
|
<SolidColorBrush x:Key="TopBarBorderBrush" Color="#334155" />
|
||||||
|
<SolidColorBrush x:Key="TopBarTextBrush" Color="#93C5FD" />
|
||||||
|
|
||||||
|
<!-- Text Colors -->
|
||||||
|
<SolidColorBrush x:Key="TextPrimaryBrush" Color="#F1F5F9" />
|
||||||
|
<SolidColorBrush x:Key="TextSecondaryBrush" Color="#94A3B8" />
|
||||||
|
|
||||||
|
<!-- Help Badge -->
|
||||||
|
<SolidColorBrush x:Key="HelpBadgeBackgroundBrush" Color="#1E3A8A" />
|
||||||
|
<SolidColorBrush x:Key="HelpBadgeBorderBrush" Color="#3B82F6" />
|
||||||
|
|
||||||
|
<!-- Error -->
|
||||||
|
<SolidColorBrush x:Key="ErrorTextBrush" Color="#F87171" />
|
||||||
|
|
||||||
|
<!-- Preview/Item Background -->
|
||||||
|
<SolidColorBrush x:Key="PreviewBackgroundBrush" Color="#0F172A" />
|
||||||
|
<SolidColorBrush x:Key="PreviewBorderBrush" Color="#334155" />
|
||||||
|
|
||||||
|
<!-- Danger Button -->
|
||||||
|
<SolidColorBrush x:Key="DangerSoftBackgroundBrush" Color="#7F1D1D" />
|
||||||
|
<SolidColorBrush x:Key="DangerSoftBorderBrush" Color="#991B1B" />
|
||||||
|
<SolidColorBrush x:Key="DangerButtonBackgroundBrush" Color="#EF4444" />
|
||||||
|
<SolidColorBrush x:Key="DangerButtonBackgroundHoverBrush" Color="#DC2626" />
|
||||||
|
<SolidColorBrush x:Key="DangerButtonBackgroundPressedBrush" Color="#B91C1C" />
|
||||||
|
|
||||||
|
<!-- Modal -->
|
||||||
|
<SolidColorBrush x:Key="OverlayBackgroundBrush" Color="#CC000000" />
|
||||||
|
<SolidColorBrush x:Key="ModalBackgroundBrush" Color="#1E293B" />
|
||||||
|
<SolidColorBrush x:Key="ModalBorderBrush" Color="#334155" />
|
||||||
|
</ResourceDictionary>
|
||||||
|
</ResourceDictionary.ThemeDictionaries>
|
||||||
|
</ResourceDictionary>
|
||||||
</Application.Resources>
|
</Application.Resources>
|
||||||
<Application.Styles>
|
<Application.Styles>
|
||||||
<fluent:FluentTheme />
|
<fluent:FluentTheme />
|
||||||
|
|||||||
@ -33,7 +33,10 @@ public sealed class ConfigCategoryViewModel : ViewModelBase
|
|||||||
FolderPerMessageField = fieldList.FirstOrDefault(field =>
|
FolderPerMessageField = fieldList.FirstOrDefault(field =>
|
||||||
string.Equals(field.PropertyName, nameof(Config.FolderPerMessage), StringComparison.Ordinal));
|
string.Equals(field.PropertyName, nameof(Config.FolderPerMessage), StringComparison.Ordinal));
|
||||||
|
|
||||||
IEnumerable<ConfigFieldViewModel> visibleFields = IsDownloadBehavior
|
IEnumerable<ConfigFieldViewModel> visibleFields = IsExternal
|
||||||
|
? fieldList.Where(field => field.PropertyName is not nameof(Config.FFmpegPath)
|
||||||
|
and not nameof(Config.FFprobePath))
|
||||||
|
: IsDownloadBehavior
|
||||||
? fieldList.Where(field => field.PropertyName is not nameof(Config.DownloadOnlySpecificDates)
|
? fieldList.Where(field => field.PropertyName is not nameof(Config.DownloadOnlySpecificDates)
|
||||||
and not nameof(Config.DownloadDateSelection)
|
and not nameof(Config.DownloadDateSelection)
|
||||||
and not nameof(Config.CustomDate)
|
and not nameof(Config.CustomDate)
|
||||||
@ -56,6 +59,9 @@ public sealed class ConfigCategoryViewModel : ViewModelBase
|
|||||||
|
|
||||||
public string CategoryName { get; }
|
public string CategoryName { get; }
|
||||||
|
|
||||||
|
public bool IsExternal =>
|
||||||
|
string.Equals(CategoryName, "External", StringComparison.Ordinal);
|
||||||
|
|
||||||
public bool IsDownloadBehavior =>
|
public bool IsDownloadBehavior =>
|
||||||
string.Equals(CategoryName, "Download Behavior", StringComparison.Ordinal);
|
string.Equals(CategoryName, "Download Behavior", StringComparison.Ordinal);
|
||||||
|
|
||||||
|
|||||||
@ -485,7 +485,7 @@ public partial class MainWindowViewModel(
|
|||||||
RefreshIgnoredUsersListsCommand.NotifyCanExecuteChanged();
|
RefreshIgnoredUsersListsCommand.NotifyCanExecuteChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
[RelayCommand]
|
[RelayCommand(CanExecute = nameof(CanEditConfig))]
|
||||||
private void EditConfig()
|
private void EditConfig()
|
||||||
{
|
{
|
||||||
if (CurrentScreen == AppScreen.Config)
|
if (CurrentScreen == AppScreen.Config)
|
||||||
@ -824,6 +824,8 @@ public partial class MainWindowViewModel(
|
|||||||
|
|
||||||
private bool CanLogout() => IsAuthenticated && !IsDownloading;
|
private bool CanLogout() => IsAuthenticated && !IsDownloading;
|
||||||
|
|
||||||
|
private bool CanEditConfig() => CurrentScreen != AppScreen.Config;
|
||||||
|
|
||||||
partial void OnCurrentScreenChanged(AppScreen value)
|
partial void OnCurrentScreenChanged(AppScreen value)
|
||||||
{
|
{
|
||||||
OnPropertyChanged(nameof(IsLoadingScreen));
|
OnPropertyChanged(nameof(IsLoadingScreen));
|
||||||
@ -839,6 +841,7 @@ public partial class MainWindowViewModel(
|
|||||||
RefreshUsersCommand.NotifyCanExecuteChanged();
|
RefreshUsersCommand.NotifyCanExecuteChanged();
|
||||||
RefreshIgnoredUsersListsCommand.NotifyCanExecuteChanged();
|
RefreshIgnoredUsersListsCommand.NotifyCanExecuteChanged();
|
||||||
LogoutCommand.NotifyCanExecuteChanged();
|
LogoutCommand.NotifyCanExecuteChanged();
|
||||||
|
EditConfigCommand.NotifyCanExecuteChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
partial void OnIsDownloadingChanged(bool value)
|
partial void OnIsDownloadingChanged(bool value)
|
||||||
@ -1649,8 +1652,6 @@ public partial class MainWindowViewModel(
|
|||||||
or nameof(Config.NonInteractiveModeListName)
|
or nameof(Config.NonInteractiveModeListName)
|
||||||
or nameof(Config.NonInteractiveModePurchasedTab)
|
or nameof(Config.NonInteractiveModePurchasedTab)
|
||||||
or nameof(Config.DisableBrowserAuth)
|
or nameof(Config.DisableBrowserAuth)
|
||||||
or nameof(Config.FFmpegPath)
|
|
||||||
or nameof(Config.FFprobePath)
|
|
||||||
or nameof(Config.DownloadPath)
|
or nameof(Config.DownloadPath)
|
||||||
or nameof(Config.DrmVideoDurationMatchThreshold)
|
or nameof(Config.DrmVideoDurationMatchThreshold)
|
||||||
or nameof(Config.DownloadVideos)
|
or nameof(Config.DownloadVideos)
|
||||||
@ -1672,6 +1673,7 @@ public partial class MainWindowViewModel(
|
|||||||
{
|
{
|
||||||
nameof(Config.DisableBrowserAuth) => "Auth",
|
nameof(Config.DisableBrowserAuth) => "Auth",
|
||||||
nameof(Config.FFmpegPath) => "External",
|
nameof(Config.FFmpegPath) => "External",
|
||||||
|
nameof(Config.FFprobePath) => "External",
|
||||||
|
|
||||||
nameof(Config.DownloadAvatarHeaderPhoto) => "Download Media Types",
|
nameof(Config.DownloadAvatarHeaderPhoto) => "Download Media Types",
|
||||||
nameof(Config.DownloadPaidPosts) => "Download Media Types",
|
nameof(Config.DownloadPaidPosts) => "Download Media Types",
|
||||||
@ -1743,7 +1745,7 @@ public partial class MainWindowViewModel(
|
|||||||
};
|
};
|
||||||
|
|
||||||
private static bool IsLeftColumnCategory(string categoryName) =>
|
private static bool IsLeftColumnCategory(string categoryName) =>
|
||||||
categoryName is "Appearance" or "Logging" or "Download Behavior" or "Subscriptions";
|
categoryName is "Appearance" or "Logging" or "External" or "Download Behavior" or "Subscriptions";
|
||||||
|
|
||||||
private static bool IsRightColumnCategory(string categoryName) =>
|
private static bool IsRightColumnCategory(string categoryName) =>
|
||||||
categoryName is "File Naming" or "Folder Structure" or "Performance";
|
categoryName is "File Naming" or "Folder Structure" or "Performance";
|
||||||
@ -1753,8 +1755,9 @@ public partial class MainWindowViewModel(
|
|||||||
{
|
{
|
||||||
"Appearance" => 1,
|
"Appearance" => 1,
|
||||||
"Logging" => 2,
|
"Logging" => 2,
|
||||||
"Download Behavior" => 3,
|
"External" => 3,
|
||||||
"Subscriptions" => 4,
|
"Download Behavior" => 4,
|
||||||
|
"Subscriptions" => 5,
|
||||||
_ => 100
|
_ => 100
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -5,99 +5,144 @@
|
|||||||
xmlns:views="using:OF_DL.Gui.Views"
|
xmlns:views="using:OF_DL.Gui.Views"
|
||||||
x:Class="OF_DL.Gui.Views.AboutWindow"
|
x:Class="OF_DL.Gui.Views.AboutWindow"
|
||||||
x:DataType="views:AboutWindow"
|
x:DataType="views:AboutWindow"
|
||||||
Width="760"
|
Width="600"
|
||||||
Height="520"
|
Height="520"
|
||||||
MinWidth="620"
|
MinWidth="550"
|
||||||
MinHeight="440"
|
MinHeight="420"
|
||||||
Title="About OF DL"
|
Title="About OF DL"
|
||||||
Background="{DynamicResource WindowBackgroundBrush}"
|
Background="{DynamicResource WindowBackgroundBrush}"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<Border Margin="14"
|
<Window.Styles>
|
||||||
Padding="16"
|
<Style Selector="Button.link">
|
||||||
Background="{DynamicResource SurfaceBackgroundBrush}"
|
<Setter Property="Background" Value="Transparent" />
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource PrimaryButtonBackgroundBrush}" />
|
||||||
|
<Setter Property="Padding" Value="0" />
|
||||||
|
<Setter Property="BorderThickness" Value="0" />
|
||||||
|
<Setter Property="Cursor" Value="Hand" />
|
||||||
|
</Style>
|
||||||
|
<Style Selector="Button.link:pointerover">
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource PrimaryButtonBackgroundHoverBrush}" />
|
||||||
|
</Style>
|
||||||
|
</Window.Styles>
|
||||||
|
|
||||||
|
<Grid Margin="24"
|
||||||
|
RowDefinitions="Auto,*">
|
||||||
|
<TextBlock Grid.Row="0"
|
||||||
|
FontSize="28"
|
||||||
|
FontWeight="Bold"
|
||||||
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
|
Text="About OF DL"
|
||||||
|
Margin="0,0,0,20" />
|
||||||
|
|
||||||
|
<ScrollViewer Grid.Row="1">
|
||||||
|
<StackPanel Spacing="16">
|
||||||
|
<!-- Application Info Section -->
|
||||||
|
<Border Background="{DynamicResource SurfaceBackgroundBrush}"
|
||||||
BorderBrush="{DynamicResource SurfaceBorderBrush}"
|
BorderBrush="{DynamicResource SurfaceBorderBrush}"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
CornerRadius="12">
|
CornerRadius="12"
|
||||||
<Grid RowDefinitions="Auto,*,Auto">
|
Padding="24"
|
||||||
<TextBlock Grid.Row="0"
|
BoxShadow="0 1 3 0 #0F000000, 0 1 2 -1 #0F000000">
|
||||||
FontSize="24"
|
<StackPanel Spacing="12">
|
||||||
FontWeight="SemiBold"
|
<TextBlock FontSize="16"
|
||||||
|
FontWeight="Bold"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
Text="About OF DL" />
|
Text="Application" />
|
||||||
|
|
||||||
<Grid Grid.Row="1"
|
<Grid ColumnDefinitions="140,*" RowDefinitions="Auto,Auto">
|
||||||
Margin="0,14,0,0"
|
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||||
ColumnDefinitions="Auto,*"
|
|
||||||
RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto">
|
|
||||||
<TextBlock Grid.Row="1"
|
|
||||||
Grid.Column="0"
|
|
||||||
FontWeight="SemiBold"
|
FontWeight="SemiBold"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextSecondaryBrush}"
|
||||||
Text="Version:" />
|
Text="Version" />
|
||||||
<TextBlock Grid.Row="1"
|
<TextBlock Grid.Row="0" Grid.Column="1"
|
||||||
Grid.Column="1"
|
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
Text="{Binding ProgramVersion}" />
|
Text="{Binding ProgramVersion}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="2"
|
<TextBlock Grid.Row="1" Grid.Column="0"
|
||||||
Grid.Column="0"
|
Margin="0,10,0,0"
|
||||||
FontWeight="SemiBold"
|
FontWeight="SemiBold"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextSecondaryBrush}"
|
||||||
Text="Source Code:" />
|
Text="Source Code" />
|
||||||
<Button Grid.Row="2"
|
<Button Grid.Row="1" Grid.Column="1"
|
||||||
Grid.Column="1"
|
Margin="0,10,0,0"
|
||||||
|
Classes="link"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Content="{Binding SourceCodeUrl}"
|
Content="{Binding SourceCodeUrl}"
|
||||||
Click="OnOpenSourceCodeClick" />
|
Click="OnOpenSourceCodeClick" />
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
<TextBlock Grid.Row="3"
|
<!-- FFmpeg Info Section -->
|
||||||
Grid.Column="0"
|
<Border Background="{DynamicResource SurfaceBackgroundBrush}"
|
||||||
FontWeight="SemiBold"
|
BorderBrush="{DynamicResource SurfaceBorderBrush}"
|
||||||
|
BorderThickness="1"
|
||||||
|
CornerRadius="12"
|
||||||
|
Padding="24"
|
||||||
|
BoxShadow="0 1 3 0 #0F000000, 0 1 2 -1 #0F000000">
|
||||||
|
<StackPanel Spacing="12">
|
||||||
|
<TextBlock FontSize="16"
|
||||||
|
FontWeight="Bold"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
Text="FFmpeg Version:" />
|
Text="External Tools" />
|
||||||
<TextBlock Grid.Row="3"
|
|
||||||
Grid.Column="1"
|
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
|
||||||
Text="{Binding FfmpegVersion}" />
|
|
||||||
|
|
||||||
<TextBlock Grid.Row="4"
|
<StackPanel Spacing="12">
|
||||||
Grid.Column="0"
|
<!-- FFmpeg -->
|
||||||
|
<TextBlock Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
|
Text="FFmpeg" />
|
||||||
|
<Grid ColumnDefinitions="120,*" RowDefinitions="Auto,Auto" Margin="20,0,0,0">
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||||
FontWeight="SemiBold"
|
FontWeight="SemiBold"
|
||||||
|
Foreground="{DynamicResource TextSecondaryBrush}"
|
||||||
|
Text="Version" />
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="1"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
Text="FFprobe Version:" />
|
Text="{Binding FfmpegVersion}"
|
||||||
<TextBlock Grid.Row="4"
|
TextWrapping="Wrap" />
|
||||||
Grid.Column="1"
|
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
|
||||||
Text="{Binding FfprobeVersion}" />
|
|
||||||
|
|
||||||
<TextBlock Grid.Row="5"
|
<TextBlock Grid.Row="1" Grid.Column="0"
|
||||||
Grid.Column="0"
|
Margin="0,8,0,0"
|
||||||
FontWeight="SemiBold"
|
FontWeight="SemiBold"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextSecondaryBrush}"
|
||||||
Text="FFmpeg License:" />
|
Text="License" />
|
||||||
<Button Grid.Row="5"
|
<Button Grid.Row="1" Grid.Column="1"
|
||||||
Grid.Column="1"
|
Margin="0,8,0,0"
|
||||||
|
Classes="link"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Content="{Binding FfmpegLicenseUrl}"
|
Content="{Binding FfmpegLicenseUrl}"
|
||||||
Click="OnOpenFfmpegLicenseClick" />
|
Click="OnOpenFfmpegLicenseClick" />
|
||||||
|
</Grid>
|
||||||
|
|
||||||
<TextBlock Grid.Row="6"
|
<!-- FFprobe -->
|
||||||
Grid.Column="0"
|
<TextBlock Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
|
Text="FFprobe"
|
||||||
|
Margin="0,4,0,0" />
|
||||||
|
<Grid ColumnDefinitions="120,*" RowDefinitions="Auto,Auto" Margin="20,0,0,0">
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||||
FontWeight="SemiBold"
|
FontWeight="SemiBold"
|
||||||
|
Foreground="{DynamicResource TextSecondaryBrush}"
|
||||||
|
Text="Version" />
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="1"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
Text="FFprobe License:" />
|
Text="{Binding FfprobeVersion}"
|
||||||
<Button Grid.Row="6"
|
TextWrapping="Wrap" />
|
||||||
Grid.Column="1"
|
|
||||||
|
<TextBlock Grid.Row="1" Grid.Column="0"
|
||||||
|
Margin="0,8,0,0"
|
||||||
|
FontWeight="SemiBold"
|
||||||
|
Foreground="{DynamicResource TextSecondaryBrush}"
|
||||||
|
Text="License" />
|
||||||
|
<Button Grid.Row="1" Grid.Column="1"
|
||||||
|
Margin="0,8,0,0"
|
||||||
|
Classes="link"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Content="{Binding FfprobeLicenseUrl}"
|
Content="{Binding FfprobeLicenseUrl}"
|
||||||
Click="OnOpenFfprobeLicenseClick" />
|
Click="OnOpenFfprobeLicenseClick" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
<Button Grid.Row="2"
|
</StackPanel>
|
||||||
Margin="0,18,0,0"
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
Content="Close"
|
|
||||||
Click="OnCloseClick" />
|
|
||||||
</Grid>
|
|
||||||
</Border>
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
</ScrollViewer>
|
||||||
|
</Grid>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@ -5,10 +5,10 @@
|
|||||||
xmlns:views="using:OF_DL.Gui.Views"
|
xmlns:views="using:OF_DL.Gui.Views"
|
||||||
x:Class="OF_DL.Gui.Views.FaqWindow"
|
x:Class="OF_DL.Gui.Views.FaqWindow"
|
||||||
x:DataType="views:FaqWindow"
|
x:DataType="views:FaqWindow"
|
||||||
Width="760"
|
Width="800"
|
||||||
Height="640"
|
Height="680"
|
||||||
MinWidth="600"
|
MinWidth="650"
|
||||||
MinHeight="500"
|
MinHeight="550"
|
||||||
Title="FAQ"
|
Title="FAQ"
|
||||||
Background="{DynamicResource WindowBackgroundBrush}"
|
Background="{DynamicResource WindowBackgroundBrush}"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
@ -17,58 +17,102 @@
|
|||||||
<Setter Property="Background" Value="{DynamicResource SurfaceBackgroundBrush}" />
|
<Setter Property="Background" Value="{DynamicResource SurfaceBackgroundBrush}" />
|
||||||
<Setter Property="BorderBrush" Value="{DynamicResource SurfaceBorderBrush}" />
|
<Setter Property="BorderBrush" Value="{DynamicResource SurfaceBorderBrush}" />
|
||||||
<Setter Property="BorderThickness" Value="1" />
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
<Setter Property="CornerRadius" Value="10" />
|
<Setter Property="CornerRadius" Value="12" />
|
||||||
<Setter Property="Padding" Value="14" />
|
<Setter Property="Padding" Value="20" />
|
||||||
<Setter Property="Margin" Value="0,0,0,10" />
|
<Setter Property="Margin" Value="0,0,0,16" />
|
||||||
|
<Setter Property="BoxShadow" Value="0 1 3 0 #0F000000, 0 1 2 -1 #0F000000" />
|
||||||
|
<Setter Property="Transitions">
|
||||||
|
<Transitions>
|
||||||
|
<BoxShadowsTransition Property="BoxShadow" Duration="0:0:0.2" />
|
||||||
|
</Transitions>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="Border.faqCard:pointerover">
|
||||||
|
<Setter Property="BoxShadow" Value="0 4 6 -1 #19000000, 0 2 4 -1 #0F000000" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="TextBlock.question">
|
||||||
|
<Setter Property="FontSize" Value="18" />
|
||||||
|
<Setter Property="FontWeight" Value="Bold" />
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource TextPrimaryBrush}" />
|
||||||
|
<Setter Property="TextWrapping" Value="Wrap" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="TextBlock.answer">
|
||||||
|
<Setter Property="FontSize" Value="14" />
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource TextSecondaryBrush}" />
|
||||||
|
<Setter Property="TextWrapping" Value="Wrap" />
|
||||||
|
<Setter Property="LineHeight" Value="22" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="Button.link">
|
||||||
|
<Setter Property="Background" Value="Transparent" />
|
||||||
|
<Setter Property="BorderThickness" Value="0" />
|
||||||
|
<Setter Property="Padding" Value="0" />
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource PrimaryButtonBackgroundBrush}" />
|
||||||
|
<Setter Property="FontWeight" Value="SemiBold" />
|
||||||
|
<Setter Property="Cursor" Value="Hand" />
|
||||||
|
<Setter Property="HorizontalAlignment" Value="Left" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="Button.link:pointerover">
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource PrimaryButtonBackgroundHoverBrush}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="Border.codeBlock">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource PreviewBackgroundBrush}" />
|
||||||
|
<Setter Property="BorderBrush" Value="{DynamicResource PreviewBorderBrush}" />
|
||||||
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
|
<Setter Property="Padding" Value="12" />
|
||||||
|
<Setter Property="Margin" Value="0,8,0,0" />
|
||||||
</Style>
|
</Style>
|
||||||
</Window.Styles>
|
</Window.Styles>
|
||||||
|
|
||||||
<Border Margin="14"
|
<Grid Margin="24"
|
||||||
Padding="16"
|
RowDefinitions="Auto,*">
|
||||||
Background="{DynamicResource SurfaceBackgroundBrush}"
|
<!-- Header -->
|
||||||
BorderBrush="{DynamicResource SurfaceBorderBrush}"
|
|
||||||
BorderThickness="1"
|
|
||||||
CornerRadius="12">
|
|
||||||
<Grid RowDefinitions="Auto,Auto,*,Auto">
|
|
||||||
<TextBlock Grid.Row="0"
|
<TextBlock Grid.Row="0"
|
||||||
FontSize="24"
|
FontSize="32"
|
||||||
FontWeight="SemiBold"
|
FontWeight="Bold"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
Text="Frequently Asked Questions" />
|
Text="Frequently Asked Questions"
|
||||||
|
Margin="0,0,0,20" />
|
||||||
|
|
||||||
<ScrollViewer Grid.Row="2"
|
<!-- FAQ Items -->
|
||||||
Margin="0,14,0,0">
|
<ScrollViewer Grid.Row="1">
|
||||||
<ItemsControl ItemsSource="{Binding Entries}">
|
<ItemsControl ItemsSource="{Binding Entries}">
|
||||||
<ItemsControl.ItemTemplate>
|
<ItemsControl.ItemTemplate>
|
||||||
<DataTemplate x:DataType="views:FaqEntry">
|
<DataTemplate x:DataType="views:FaqEntry">
|
||||||
<Border Classes="faqCard">
|
<Border Classes="faqCard">
|
||||||
<StackPanel Spacing="8">
|
<StackPanel Spacing="12">
|
||||||
<TextBlock FontSize="18"
|
<!-- Question -->
|
||||||
FontWeight="SemiBold"
|
<TextBlock Classes="question"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Text="{Binding Question}" />
|
||||||
Text="{Binding Question}"
|
|
||||||
TextWrapping="Wrap" />
|
|
||||||
|
|
||||||
|
<!-- Answer Paragraphs -->
|
||||||
<ItemsControl ItemsSource="{Binding Paragraphs}">
|
<ItemsControl ItemsSource="{Binding Paragraphs}">
|
||||||
<ItemsControl.ItemTemplate>
|
<ItemsControl.ItemTemplate>
|
||||||
<DataTemplate x:DataType="x:String">
|
<DataTemplate x:DataType="x:String">
|
||||||
<TextBlock Foreground="{DynamicResource TextSecondaryBrush}"
|
<TextBlock Classes="answer"
|
||||||
Text="{Binding .}"
|
Text="{Binding .}"
|
||||||
TextWrapping="Wrap" />
|
Margin="0,0,0,8" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ItemsControl.ItemTemplate>
|
</ItemsControl.ItemTemplate>
|
||||||
</ItemsControl>
|
</ItemsControl>
|
||||||
|
|
||||||
|
<!-- Links -->
|
||||||
<ItemsControl IsVisible="{Binding HasLinks}"
|
<ItemsControl IsVisible="{Binding HasLinks}"
|
||||||
ItemsSource="{Binding Links}">
|
ItemsSource="{Binding Links}">
|
||||||
|
<ItemsControl.ItemsPanel>
|
||||||
|
<ItemsPanelTemplate>
|
||||||
|
<StackPanel Spacing="8" />
|
||||||
|
</ItemsPanelTemplate>
|
||||||
|
</ItemsControl.ItemsPanel>
|
||||||
<ItemsControl.ItemTemplate>
|
<ItemsControl.ItemTemplate>
|
||||||
<DataTemplate x:DataType="views:FaqLink">
|
<DataTemplate x:DataType="views:FaqLink">
|
||||||
<Button HorizontalAlignment="Left"
|
<Button Classes="link"
|
||||||
Background="Transparent"
|
|
||||||
BorderThickness="0"
|
|
||||||
Padding="0"
|
|
||||||
Foreground="{DynamicResource PrimaryButtonBackgroundBrush}"
|
|
||||||
FontWeight="SemiBold"
|
|
||||||
Content="{Binding Label}"
|
Content="{Binding Label}"
|
||||||
ToolTip.Tip="{Binding Url}"
|
ToolTip.Tip="{Binding Url}"
|
||||||
CommandParameter="{Binding Url}"
|
CommandParameter="{Binding Url}"
|
||||||
@ -77,16 +121,12 @@
|
|||||||
</ItemsControl.ItemTemplate>
|
</ItemsControl.ItemTemplate>
|
||||||
</ItemsControl>
|
</ItemsControl>
|
||||||
|
|
||||||
|
<!-- Code Snippet -->
|
||||||
<Border IsVisible="{Binding HasCodeSnippet}"
|
<Border IsVisible="{Binding HasCodeSnippet}"
|
||||||
Margin="0,2,0,0"
|
Classes="codeBlock">
|
||||||
Padding="10"
|
|
||||||
CornerRadius="8"
|
|
||||||
Background="{DynamicResource PreviewBackgroundBrush}"
|
|
||||||
BorderBrush="{DynamicResource PreviewBorderBrush}"
|
|
||||||
BorderThickness="1">
|
|
||||||
<TextBlock Text="{Binding CodeSnippet}"
|
<TextBlock Text="{Binding CodeSnippet}"
|
||||||
FontFamily="Consolas"
|
FontFamily="Consolas,Courier New,monospace"
|
||||||
FontSize="12"
|
FontSize="13"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
</Border>
|
</Border>
|
||||||
@ -96,12 +136,5 @@
|
|||||||
</ItemsControl.ItemTemplate>
|
</ItemsControl.ItemTemplate>
|
||||||
</ItemsControl>
|
</ItemsControl>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
|
|
||||||
<Button Grid.Row="3"
|
|
||||||
Margin="0,18,0,0"
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
Content="Close"
|
|
||||||
Click="OnCloseClick" />
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@ -20,29 +20,130 @@
|
|||||||
<Setter Property="BorderBrush" Value="{DynamicResource SurfaceBorderBrush}" />
|
<Setter Property="BorderBrush" Value="{DynamicResource SurfaceBorderBrush}" />
|
||||||
<Setter Property="BorderThickness" Value="1" />
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
<Setter Property="CornerRadius" Value="12" />
|
<Setter Property="CornerRadius" Value="12" />
|
||||||
|
<Setter Property="BoxShadow" Value="0 1 3 0 #0F000000, 0 1 2 -1 #0F000000" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<Style Selector="Button.primary">
|
<Style Selector="Button.primary">
|
||||||
<Setter Property="Background" Value="{DynamicResource PrimaryButtonBackgroundBrush}" />
|
<Setter Property="Background" Value="{DynamicResource PrimaryButtonBackgroundBrush}" />
|
||||||
<Setter Property="Foreground" Value="{DynamicResource PrimaryButtonForegroundBrush}" />
|
<Setter Property="Foreground" Value="{DynamicResource PrimaryButtonForegroundBrush}" />
|
||||||
<Setter Property="Padding" Value="14,8" />
|
<Setter Property="Padding" Value="16,8" />
|
||||||
<Setter Property="CornerRadius" Value="8" />
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
<Setter Property="FontWeight" Value="SemiBold" />
|
<Setter Property="FontWeight" Value="SemiBold" />
|
||||||
|
<Setter Property="Transitions">
|
||||||
|
<Transitions>
|
||||||
|
<TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.15" />
|
||||||
|
<BrushTransition Property="Background" Duration="0:0:0.15" />
|
||||||
|
</Transitions>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="Button.primary:pointerover /template/ ContentPresenter#PART_ContentPresenter">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource PrimaryButtonBackgroundHoverBrush}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="Button.primary:pressed /template/ ContentPresenter#PART_ContentPresenter">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource PrimaryButtonBackgroundPressedBrush}" />
|
||||||
|
<Setter Property="RenderTransform" Value="scale(0.98)" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<Style Selector="Button.secondary">
|
<Style Selector="Button.secondary">
|
||||||
<Setter Property="Background" Value="{DynamicResource SecondaryButtonBackgroundBrush}" />
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonBackgroundBrush}" />
|
||||||
<Setter Property="Foreground" Value="{DynamicResource SecondaryButtonForegroundBrush}" />
|
<Setter Property="Foreground" Value="{DynamicResource SecondaryButtonForegroundBrush}" />
|
||||||
<Setter Property="Padding" Value="14,8" />
|
<Setter Property="Padding" Value="16,7" />
|
||||||
<Setter Property="CornerRadius" Value="8" />
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
<Setter Property="BorderBrush" Value="{DynamicResource SecondaryButtonBorderBrush}" />
|
<Setter Property="BorderBrush" Value="{DynamicResource SecondaryButtonBorderBrush}" />
|
||||||
<Setter Property="BorderThickness" Value="1" />
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
<Setter Property="FontWeight" Value="SemiBold" />
|
<Setter Property="FontWeight" Value="SemiBold" />
|
||||||
|
<Setter Property="Transitions">
|
||||||
|
<Transitions>
|
||||||
|
<TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.15" />
|
||||||
|
<BrushTransition Property="Background" Duration="0:0:0.15" />
|
||||||
|
</Transitions>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="Button.secondary:pointerover /template/ ContentPresenter#PART_ContentPresenter">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonBackgroundHoverBrush}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="Button.secondary:pressed /template/ ContentPresenter#PART_ContentPresenter">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource SecondaryButtonBackgroundPressedBrush}" />
|
||||||
|
<Setter Property="RenderTransform" Value="scale(0.98)" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<Style Selector="TextBox.fileNameOverlayInput:not(:empty)">
|
<Style Selector="TextBox.fileNameOverlayInput:not(:empty)">
|
||||||
<Setter Property="Foreground" Value="Transparent" />
|
<Setter Property="Foreground" Value="Transparent" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
|
<!-- Modern TextBox Styling -->
|
||||||
|
<Style Selector="TextBox">
|
||||||
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
|
<Setter Property="Padding" Value="10,7" />
|
||||||
|
<Setter Property="Transitions">
|
||||||
|
<Transitions>
|
||||||
|
<BrushTransition Property="BorderBrush" Duration="0:0:0.15" />
|
||||||
|
</Transitions>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="TextBox:focus">
|
||||||
|
<Setter Property="BorderBrush" Value="{DynamicResource PrimaryButtonBackgroundBrush}" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- Modern ComboBox Styling -->
|
||||||
|
<Style Selector="ComboBox">
|
||||||
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
|
<Setter Property="Padding" Value="10,8" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- Modern AutoCompleteBox Styling -->
|
||||||
|
<Style Selector="AutoCompleteBox">
|
||||||
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
|
<Setter Property="Padding" Value="10,8" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- Modern DatePicker Styling -->
|
||||||
|
<Style Selector="DatePicker">
|
||||||
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="DatePicker /template/ Button">
|
||||||
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
|
<Setter Property="Padding" Value="10,8" />
|
||||||
|
<Setter Property="MinHeight" Value="36" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="DatePicker /template/ TextBlock">
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center" />
|
||||||
|
<Setter Property="Margin" Value="0" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- Modern NumericUpDown Styling -->
|
||||||
|
<Style Selector="NumericUpDown">
|
||||||
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- Modern CheckBox Styling -->
|
||||||
|
<Style Selector="CheckBox">
|
||||||
|
<Setter Property="Padding" Value="8,6" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- Modern ProgressBar Styling -->
|
||||||
|
<Style Selector="ProgressBar">
|
||||||
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
|
<Setter Property="Height" Value="8" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
<!-- Modern ListBox Styling -->
|
||||||
|
<Style Selector="ListBox">
|
||||||
|
<Setter Property="CornerRadius" Value="8" />
|
||||||
|
<Setter Property="BorderThickness" Value="1" />
|
||||||
|
</Style>
|
||||||
</Window.Styles>
|
</Window.Styles>
|
||||||
|
|
||||||
<Grid RowDefinitions="Auto,Auto,*">
|
<Grid RowDefinitions="Auto,Auto,*">
|
||||||
@ -69,7 +170,7 @@
|
|||||||
</Menu>
|
</Menu>
|
||||||
|
|
||||||
<Border Grid.Row="1"
|
<Border Grid.Row="1"
|
||||||
Padding="16"
|
Padding="18,14"
|
||||||
BorderThickness="0,0,0,1"
|
BorderThickness="0,0,0,1"
|
||||||
BorderBrush="{DynamicResource TopBarBorderBrush}"
|
BorderBrush="{DynamicResource TopBarBorderBrush}"
|
||||||
Background="{DynamicResource TopBarBackgroundBrush}">
|
Background="{DynamicResource TopBarBackgroundBrush}">
|
||||||
@ -93,7 +194,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<Grid Grid.Row="2" Margin="14">
|
<Grid Grid.Row="2" Margin="20">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
@ -113,11 +214,13 @@
|
|||||||
<TextBlock HorizontalAlignment="Center" Text="{Binding LoadingMessage}" TextWrapping="Wrap" />
|
<TextBlock HorizontalAlignment="Center" Text="{Binding LoadingMessage}" TextWrapping="Wrap" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<ScrollViewer IsVisible="{Binding IsConfigScreen}">
|
<ScrollViewer IsVisible="{Binding IsConfigScreen}"
|
||||||
<StackPanel Spacing="14" Margin="2,0,4,0">
|
VerticalScrollBarVisibility="Auto">
|
||||||
<TextBlock FontSize="22" FontWeight="SemiBold" Text="Configuration" />
|
<StackPanel Spacing="20" Margin="2,0,4,0">
|
||||||
|
<TextBlock FontSize="24" FontWeight="SemiBold" Text="Configuration"
|
||||||
|
Foreground="{DynamicResource TextPrimaryBrush}" />
|
||||||
|
|
||||||
<Border Classes="surface" Padding="12" Margin="0,0,0,2">
|
<Border Classes="surface" Padding="20" Margin="0,0,0,2">
|
||||||
<StackPanel Spacing="8">
|
<StackPanel Spacing="8">
|
||||||
<TextBlock FontSize="16"
|
<TextBlock FontSize="16"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
@ -214,14 +317,95 @@
|
|||||||
<ItemsControl.ItemTemplate>
|
<ItemsControl.ItemTemplate>
|
||||||
<DataTemplate x:DataType="vm:ConfigCategoryViewModel">
|
<DataTemplate x:DataType="vm:ConfigCategoryViewModel">
|
||||||
<Border Classes="surface"
|
<Border Classes="surface"
|
||||||
Margin="0,0,0,12"
|
Margin="0,0,0,16"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
Padding="10">
|
Padding="20">
|
||||||
<StackPanel Spacing="8">
|
<StackPanel Spacing="8">
|
||||||
<TextBlock FontSize="16"
|
<TextBlock FontSize="16"
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Foreground="{DynamicResource TextPrimaryBrush}"
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
Text="{Binding CategoryName}" />
|
Text="{Binding CategoryName}" />
|
||||||
|
<StackPanel IsVisible="{Binding IsExternal}"
|
||||||
|
Spacing="10"
|
||||||
|
Margin="0,0,0,0">
|
||||||
|
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||||
|
<TextBlock FontWeight="SemiBold"
|
||||||
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
|
Text="FFmpeg Path" />
|
||||||
|
<Button Width="20"
|
||||||
|
Height="20"
|
||||||
|
MinWidth="20"
|
||||||
|
MinHeight="20"
|
||||||
|
Padding="0"
|
||||||
|
HorizontalContentAlignment="Center"
|
||||||
|
VerticalContentAlignment="Center"
|
||||||
|
FontSize="12"
|
||||||
|
FontWeight="Bold"
|
||||||
|
Background="{DynamicResource HelpBadgeBackgroundBrush}"
|
||||||
|
BorderBrush="{DynamicResource HelpBadgeBorderBrush}"
|
||||||
|
BorderThickness="1"
|
||||||
|
CornerRadius="10"
|
||||||
|
Content="?"
|
||||||
|
ToolTip.Tip="{Binding ViewModel.FfmpegPathHelpText, RelativeSource={RelativeSource AncestorType=views:MainWindow}, FallbackValue=''}" />
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<Grid ColumnDefinitions="*,Auto">
|
||||||
|
<TextBox Grid.Column="0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
Text="{Binding ViewModel.FfmpegPath, RelativeSource={RelativeSource AncestorType=views:MainWindow}, FallbackValue=''}"
|
||||||
|
Watermark="Optional: path to FFmpeg executable" />
|
||||||
|
<Button Grid.Column="1"
|
||||||
|
Margin="8,0,0,0"
|
||||||
|
Classes="secondary"
|
||||||
|
Content="Browse..."
|
||||||
|
Click="OnBrowseFfmpegPathClick" />
|
||||||
|
</Grid>
|
||||||
|
<TextBlock
|
||||||
|
IsVisible="{Binding ViewModel.HasFfmpegPathError, RelativeSource={RelativeSource AncestorType=views:MainWindow}, FallbackValue=False}"
|
||||||
|
Foreground="{DynamicResource ErrorTextBrush}"
|
||||||
|
Text="{Binding ViewModel.FfmpegPathError, RelativeSource={RelativeSource AncestorType=views:MainWindow}, FallbackValue=''}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
|
||||||
|
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||||
|
<TextBlock FontWeight="SemiBold"
|
||||||
|
Foreground="{DynamicResource TextPrimaryBrush}"
|
||||||
|
Text="FFprobe Path" />
|
||||||
|
<Button Width="20"
|
||||||
|
Height="20"
|
||||||
|
MinWidth="20"
|
||||||
|
MinHeight="20"
|
||||||
|
Padding="0"
|
||||||
|
HorizontalContentAlignment="Center"
|
||||||
|
VerticalContentAlignment="Center"
|
||||||
|
FontSize="12"
|
||||||
|
FontWeight="Bold"
|
||||||
|
Background="{DynamicResource HelpBadgeBackgroundBrush}"
|
||||||
|
BorderBrush="{DynamicResource HelpBadgeBorderBrush}"
|
||||||
|
BorderThickness="1"
|
||||||
|
CornerRadius="10"
|
||||||
|
Content="?"
|
||||||
|
ToolTip.Tip="{Binding ViewModel.FfprobePathHelpText, RelativeSource={RelativeSource AncestorType=views:MainWindow}, FallbackValue=''}" />
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<Grid ColumnDefinitions="*,Auto">
|
||||||
|
<TextBox Grid.Column="0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
Text="{Binding ViewModel.FfprobePath, RelativeSource={RelativeSource AncestorType=views:MainWindow}, FallbackValue=''}"
|
||||||
|
Watermark="Optional: path to FFprobe executable" />
|
||||||
|
<Button Grid.Column="1"
|
||||||
|
Margin="8,0,0,0"
|
||||||
|
Classes="secondary"
|
||||||
|
Content="Browse..."
|
||||||
|
Click="OnBrowseFfprobePathClick" />
|
||||||
|
</Grid>
|
||||||
|
<TextBlock
|
||||||
|
IsVisible="{Binding ViewModel.HasFfprobePathError, RelativeSource={RelativeSource AncestorType=views:MainWindow}, FallbackValue=False}"
|
||||||
|
Foreground="{DynamicResource ErrorTextBrush}"
|
||||||
|
Text="{Binding ViewModel.FfprobePathError, RelativeSource={RelativeSource AncestorType=views:MainWindow}, FallbackValue=''}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</StackPanel>
|
||||||
<StackPanel IsVisible="{Binding IsDownloadBehavior}"
|
<StackPanel IsVisible="{Binding IsDownloadBehavior}"
|
||||||
Spacing="10"
|
Spacing="10"
|
||||||
Margin="0,0,0,0">
|
Margin="0,0,0,0">
|
||||||
@ -356,7 +540,8 @@
|
|||||||
MinWidth="160"
|
MinWidth="160"
|
||||||
ItemsSource="{Binding DownloadVideoResolutionField.EnumOptions, FallbackValue={x:Null}}"
|
ItemsSource="{Binding DownloadVideoResolutionField.EnumOptions, FallbackValue={x:Null}}"
|
||||||
SelectedItem="{Binding DownloadVideoResolutionField.EnumValue, FallbackValue={x:Null}}" />
|
SelectedItem="{Binding DownloadVideoResolutionField.EnumValue, FallbackValue={x:Null}}" />
|
||||||
<TextBlock IsVisible="{Binding DownloadVideoResolutionField.HasError, FallbackValue=False}"
|
<TextBlock
|
||||||
|
IsVisible="{Binding DownloadVideoResolutionField.HasError, FallbackValue=False}"
|
||||||
Foreground="{DynamicResource ErrorTextBrush}"
|
Foreground="{DynamicResource ErrorTextBrush}"
|
||||||
Text="{Binding DownloadVideoResolutionField.ErrorMessage, FallbackValue=''}"
|
Text="{Binding DownloadVideoResolutionField.ErrorMessage, FallbackValue=''}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
@ -809,8 +994,8 @@
|
|||||||
ColumnDefinitions="2*,3*">
|
ColumnDefinitions="2*,3*">
|
||||||
<Border Grid.Row="0"
|
<Border Grid.Row="0"
|
||||||
Grid.ColumnSpan="2"
|
Grid.ColumnSpan="2"
|
||||||
Padding="10"
|
Padding="16"
|
||||||
Margin="0,0,0,10"
|
Margin="0,0,0,16"
|
||||||
Classes="surface">
|
Classes="surface">
|
||||||
<Grid ColumnDefinitions="*,Auto">
|
<Grid ColumnDefinitions="*,Auto">
|
||||||
<StackPanel Grid.Column="0"
|
<StackPanel Grid.Column="0"
|
||||||
@ -836,7 +1021,7 @@
|
|||||||
<Border Grid.Row="1"
|
<Border Grid.Row="1"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Margin="0,0,8,0"
|
Margin="0,0,8,0"
|
||||||
Padding="10"
|
Padding="16"
|
||||||
Classes="surface">
|
Classes="surface">
|
||||||
<Grid RowDefinitions="Auto,*">
|
<Grid RowDefinitions="Auto,*">
|
||||||
<Grid Grid.Row="0" ColumnDefinitions="*,Auto" VerticalAlignment="Center">
|
<Grid Grid.Row="0" ColumnDefinitions="*,Auto" VerticalAlignment="Center">
|
||||||
@ -858,16 +1043,28 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
<ListBox Grid.Row="1" Margin="0,8,0,0" ItemsSource="{Binding AvailableUsers}"
|
<ListBox Grid.Row="1" Margin="0,8,0,0" ItemsSource="{Binding AvailableUsers}"
|
||||||
Background="{DynamicResource SurfaceBackgroundBrush}"
|
Background="{DynamicResource SurfaceBackgroundBrush}"
|
||||||
BorderBrush="{DynamicResource SurfaceBorderBrush}"
|
BorderBrush="Transparent"
|
||||||
|
BorderThickness="0"
|
||||||
IsEnabled="{Binding !IsDownloading}">
|
IsEnabled="{Binding !IsDownloading}">
|
||||||
<ListBox.Styles>
|
<ListBox.Styles>
|
||||||
<Style Selector="ListBoxItem">
|
<Style Selector="ListBoxItem">
|
||||||
<Setter Property="Padding" Value="0" />
|
<Setter Property="Padding" Value="0" />
|
||||||
</Style>
|
</Style>
|
||||||
|
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
|
||||||
|
<Setter Property="Background" Value="Transparent" />
|
||||||
|
</Style>
|
||||||
|
<Style Selector="ListBoxItem:selected:focus /template/ ContentPresenter">
|
||||||
|
<Setter Property="Background" Value="Transparent" />
|
||||||
|
</Style>
|
||||||
|
<Style Selector="ListBoxItem:selected:pointerover /template/ ContentPresenter">
|
||||||
|
<Setter Property="Background" Value="Transparent" />
|
||||||
|
</Style>
|
||||||
</ListBox.Styles>
|
</ListBox.Styles>
|
||||||
<ListBox.ItemTemplate>
|
<ListBox.ItemTemplate>
|
||||||
<DataTemplate x:DataType="vm:SelectableUserViewModel">
|
<DataTemplate x:DataType="vm:SelectableUserViewModel">
|
||||||
<CheckBox Content="{Binding Username}" IsChecked="{Binding IsSelected}" />
|
<CheckBox Content="{Binding Username}"
|
||||||
|
IsChecked="{Binding IsSelected}"
|
||||||
|
HorizontalAlignment="Stretch" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ListBox.ItemTemplate>
|
</ListBox.ItemTemplate>
|
||||||
</ListBox>
|
</ListBox>
|
||||||
@ -877,7 +1074,7 @@
|
|||||||
<Border Grid.Row="1"
|
<Border Grid.Row="1"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Margin="8,0,0,0"
|
Margin="8,0,0,0"
|
||||||
Padding="10"
|
Padding="16"
|
||||||
Classes="surface">
|
Classes="surface">
|
||||||
<Grid RowDefinitions="Auto,*">
|
<Grid RowDefinitions="Auto,*">
|
||||||
<TextBlock Grid.Row="0" FontWeight="SemiBold"
|
<TextBlock Grid.Row="0" FontWeight="SemiBold"
|
||||||
@ -886,14 +1083,22 @@
|
|||||||
Margin="0,8,0,0"
|
Margin="0,8,0,0"
|
||||||
ItemsSource="{Binding ActivityLog}"
|
ItemsSource="{Binding ActivityLog}"
|
||||||
Background="{DynamicResource SurfaceBackgroundBrush}"
|
Background="{DynamicResource SurfaceBackgroundBrush}"
|
||||||
BorderBrush="{DynamicResource SurfaceBorderBrush}" />
|
BorderBrush="Transparent"
|
||||||
|
BorderThickness="0"
|
||||||
|
SelectionMode="Single">
|
||||||
|
<ListBox.Styles>
|
||||||
|
<Style Selector="ListBoxItem">
|
||||||
|
<Setter Property="IsHitTestVisible" Value="False" />
|
||||||
|
</Style>
|
||||||
|
</ListBox.Styles>
|
||||||
|
</ListBox>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<Border Grid.Row="2"
|
<Border Grid.Row="2"
|
||||||
Grid.ColumnSpan="2" Grid.Column="0"
|
Grid.ColumnSpan="2" Grid.Column="0"
|
||||||
Margin="0,10,0,0"
|
Margin="0,16,0,0"
|
||||||
Padding="10"
|
Padding="16"
|
||||||
Classes="surface"
|
Classes="surface"
|
||||||
IsVisible="{Binding IsDownloadProgressVisible}">
|
IsVisible="{Binding IsDownloadProgressVisible}">
|
||||||
<StackPanel Spacing="8">
|
<StackPanel Spacing="8">
|
||||||
@ -933,13 +1138,13 @@
|
|||||||
<Border Background="{DynamicResource ModalBackgroundBrush}"
|
<Border Background="{DynamicResource ModalBackgroundBrush}"
|
||||||
BorderBrush="{DynamicResource ModalBorderBrush}"
|
BorderBrush="{DynamicResource ModalBorderBrush}"
|
||||||
BorderThickness="1"
|
BorderThickness="1"
|
||||||
CornerRadius="12"
|
CornerRadius="16"
|
||||||
Padding="24"
|
Padding="32"
|
||||||
Width="700"
|
Width="700"
|
||||||
MaxHeight="750"
|
MaxHeight="750"
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
BoxShadow="0 8 32 0 #26000000"
|
BoxShadow="0 20 25 -5 #19000000, 0 10 10 -5 #0F000000"
|
||||||
PointerPressed="OnModalContentClicked">
|
PointerPressed="OnModalContentClicked">
|
||||||
<ScrollViewer DataContext="{Binding CreatorConfigEditor.ModalViewModel}">
|
<ScrollViewer DataContext="{Binding CreatorConfigEditor.ModalViewModel}">
|
||||||
<StackPanel Spacing="14" Margin="8,4,8,4" x:DataType="vm:CreatorConfigModalViewModel">
|
<StackPanel Spacing="14" Margin="8,4,8,4" x:DataType="vm:CreatorConfigModalViewModel">
|
||||||
@ -975,7 +1180,7 @@
|
|||||||
<TextBox x:Name="PostFileNameFormatTextBox"
|
<TextBox x:Name="PostFileNameFormatTextBox"
|
||||||
Classes="fileNameOverlayInput"
|
Classes="fileNameOverlayInput"
|
||||||
Text="{Binding PostFileNameFormat}"
|
Text="{Binding PostFileNameFormat}"
|
||||||
Watermark="Optional: override global post format"
|
Watermark="Optional: override global free post format"
|
||||||
Padding="8,6"
|
Padding="8,6"
|
||||||
CaretBrush="{DynamicResource TextPrimaryBrush}" />
|
CaretBrush="{DynamicResource TextPrimaryBrush}" />
|
||||||
<controls:FileNameFormatOverlayTextBlock IsHitTestVisible="False"
|
<controls:FileNameFormatOverlayTextBlock IsHitTestVisible="False"
|
||||||
@ -996,7 +1201,7 @@
|
|||||||
<Button Grid.Column="1"
|
<Button Grid.Column="1"
|
||||||
Margin="8,0,0,0"
|
Margin="8,0,0,0"
|
||||||
Classes="secondary"
|
Classes="secondary"
|
||||||
Content="Insert"
|
Content="Insert Variable"
|
||||||
Command="{Binding InsertPostVariableCommand}" />
|
Command="{Binding InsertPostVariableCommand}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<TextBlock IsVisible="{Binding HasUnknownPostVariables}"
|
<TextBlock IsVisible="{Binding HasUnknownPostVariables}"
|
||||||
@ -1037,7 +1242,7 @@
|
|||||||
<Button Grid.Column="1"
|
<Button Grid.Column="1"
|
||||||
Margin="8,0,0,0"
|
Margin="8,0,0,0"
|
||||||
Classes="secondary"
|
Classes="secondary"
|
||||||
Content="Insert"
|
Content="Insert Variable"
|
||||||
Command="{Binding InsertPaidPostVariableCommand}" />
|
Command="{Binding InsertPaidPostVariableCommand}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<TextBlock IsVisible="{Binding HasUnknownPaidPostVariables}"
|
<TextBlock IsVisible="{Binding HasUnknownPaidPostVariables}"
|
||||||
@ -1057,7 +1262,7 @@
|
|||||||
<TextBox x:Name="MessageFileNameFormatTextBox"
|
<TextBox x:Name="MessageFileNameFormatTextBox"
|
||||||
Classes="fileNameOverlayInput"
|
Classes="fileNameOverlayInput"
|
||||||
Text="{Binding MessageFileNameFormat}"
|
Text="{Binding MessageFileNameFormat}"
|
||||||
Watermark="Optional: override global message format"
|
Watermark="Optional: override global free message format"
|
||||||
Padding="8,6"
|
Padding="8,6"
|
||||||
CaretBrush="{DynamicResource TextPrimaryBrush}" />
|
CaretBrush="{DynamicResource TextPrimaryBrush}" />
|
||||||
<controls:FileNameFormatOverlayTextBlock IsHitTestVisible="False"
|
<controls:FileNameFormatOverlayTextBlock IsHitTestVisible="False"
|
||||||
@ -1078,7 +1283,7 @@
|
|||||||
<Button Grid.Column="1"
|
<Button Grid.Column="1"
|
||||||
Margin="8,0,0,0"
|
Margin="8,0,0,0"
|
||||||
Classes="secondary"
|
Classes="secondary"
|
||||||
Content="Insert"
|
Content="Insert Variable"
|
||||||
Command="{Binding InsertMessageVariableCommand}" />
|
Command="{Binding InsertMessageVariableCommand}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<TextBlock IsVisible="{Binding HasUnknownMessageVariables}"
|
<TextBlock IsVisible="{Binding HasUnknownMessageVariables}"
|
||||||
@ -1119,7 +1324,7 @@
|
|||||||
<Button Grid.Column="1"
|
<Button Grid.Column="1"
|
||||||
Margin="8,0,0,0"
|
Margin="8,0,0,0"
|
||||||
Classes="secondary"
|
Classes="secondary"
|
||||||
Content="Insert"
|
Content="Insert Variable"
|
||||||
Command="{Binding InsertPaidMessageVariableCommand}" />
|
Command="{Binding InsertPaidMessageVariableCommand}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<TextBlock IsVisible="{Binding HasUnknownPaidMessageVariables}"
|
<TextBlock IsVisible="{Binding HasUnknownPaidMessageVariables}"
|
||||||
|
|||||||
@ -140,7 +140,10 @@ public partial class MainWindow : Window
|
|||||||
|
|
||||||
private void OnFaqClick(object? sender, RoutedEventArgs e)
|
private void OnFaqClick(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
FaqWindow faqWindow = new();
|
FaqWindow faqWindow = new()
|
||||||
|
{
|
||||||
|
WindowStartupLocation = WindowStartupLocation.CenterOwner
|
||||||
|
};
|
||||||
faqWindow.Show(this);
|
faqWindow.Show(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,7 +154,10 @@ public partial class MainWindow : Window
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
AboutWindow aboutWindow = new(vm.ProgramVersion, vm.FfmpegVersion, vm.FfprobeVersion);
|
AboutWindow aboutWindow = new(vm.ProgramVersion, vm.FfmpegVersion, vm.FfprobeVersion)
|
||||||
|
{
|
||||||
|
WindowStartupLocation = WindowStartupLocation.CenterOwner
|
||||||
|
};
|
||||||
aboutWindow.Show(this);
|
aboutWindow.Show(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user