|
|
|
<controls:UserControlBase
|
|
|
|
x:Class="StabilityMatrix.Avalonia.Views.Dialogs.PythonPackagesDialog"
|
|
|
|
xmlns="https://github.com/avaloniaui"
|
|
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
|
|
xmlns:controls="clr-namespace:StabilityMatrix.Avalonia.Controls"
|
|
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
|
|
xmlns:lang="clr-namespace:StabilityMatrix.Avalonia.Languages"
|
|
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
|
|
xmlns:mocks="clr-namespace:StabilityMatrix.Avalonia.DesignData"
|
|
|
|
xmlns:models="clr-namespace:StabilityMatrix.Core.Models;assembly=StabilityMatrix.Core"
|
|
|
|
xmlns:python="clr-namespace:StabilityMatrix.Core.Python;assembly=StabilityMatrix.Core"
|
|
|
|
xmlns:sg="clr-namespace:SpacedGridControl.Avalonia;assembly=SpacedGridControl.Avalonia"
|
|
|
|
xmlns:system="clr-namespace:System;assembly=System.Runtime"
|
|
|
|
xmlns:ui="using:FluentAvalonia.UI.Controls"
|
|
|
|
xmlns:vm="clr-namespace:StabilityMatrix.Avalonia.ViewModels"
|
|
|
|
xmlns:vmDialogs="clr-namespace:StabilityMatrix.Avalonia.ViewModels.Dialogs"
|
|
|
|
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
|
|
|
xmlns:fluentIcons="clr-namespace:FluentIcons.Avalonia.Fluent;assembly=FluentIcons.Avalonia.Fluent"
|
|
|
|
xmlns:input="clr-namespace:FluentAvalonia.UI.Input;assembly=FluentAvalonia"
|
|
|
|
d:DataContext="{x:Static mocks:DesignData.PythonPackagesViewModel}"
|
|
|
|
d:DesignHeight="450"
|
|
|
|
d:DesignWidth="800"
|
|
|
|
x:DataType="vmDialogs:PythonPackagesViewModel"
|
|
|
|
mc:Ignorable="d">
|
|
|
|
|
|
|
|
<sg:SpacedGrid
|
|
|
|
MinHeight="300"
|
|
|
|
Margin="8"
|
|
|
|
ColumnDefinitions="Auto,Auto,*"
|
|
|
|
RowDefinitions="Auto,Auto,*">
|
|
|
|
<!-- Title -->
|
|
|
|
<!--<TextBlock
|
|
|
|
Margin="16,16,16,0"
|
|
|
|
FontSize="24"
|
|
|
|
FontWeight="Bold"
|
|
|
|
Text="{x:Static lang:Resources.Label_PythonPackages}"
|
|
|
|
TextWrapping="Wrap" />-->
|
|
|
|
|
|
|
|
<!-- Close button -->
|
|
|
|
<!--<Button
|
|
|
|
Grid.Row="1"
|
|
|
|
Grid.Column="2"
|
|
|
|
HorizontalAlignment="Right"
|
|
|
|
VerticalAlignment="Top">
|
|
|
|
<ui:SymbolIcon
|
|
|
|
Foreground="LightGreen"
|
|
|
|
Symbol=""
|
|
|
|
ToolTip.Tip="{x:Static lang:Resources.Label_ConnectedModel}" />
|
|
|
|
</Button>-->
|
|
|
|
|
|
|
|
<ui:CommandBar Grid.Row="1" Grid.Column="0">
|
|
|
|
<ui:CommandBar.Styles>
|
|
|
|
<Style Selector="ui|CommandBarButton">
|
|
|
|
<Setter Property="Padding" Value="4" />
|
|
|
|
<Setter Property="Width" Value="35" />
|
|
|
|
<Setter Property="Height" Value="45" />
|
|
|
|
</Style>
|
|
|
|
</ui:CommandBar.Styles>
|
|
|
|
<ui:CommandBar.PrimaryCommands>
|
|
|
|
<ui:CommandBarButton
|
|
|
|
IconSource="Add"
|
|
|
|
Command="{Binding InstallPackageCommand}"
|
|
|
|
Label="{x:Static lang:Resources.Action_AddPackage}" />
|
|
|
|
<ui:CommandBarButton
|
|
|
|
IconSource="Remove"
|
|
|
|
Command="{Binding UninstallSelectedPackageCommand}"
|
|
|
|
IsEnabled="{Binding SelectedPackage, Converter={x:Static ObjectConverters.IsNotNull}}"
|
|
|
|
Label="{x:Static lang:Resources.Action_Uninstall}"/>
|
|
|
|
<ui:CommandBarSeparator />
|
|
|
|
<ui:CommandBarButton
|
|
|
|
IconSource="Refresh"
|
|
|
|
Command="{Binding RefreshBackgroundCommand}"
|
|
|
|
IsEnabled="{Binding SelectedPackage, Converter={x:Static ObjectConverters.IsNotNull}}"
|
|
|
|
Label="{x:Static lang:Resources.Action_Refresh}"/>
|
|
|
|
</ui:CommandBar.PrimaryCommands>
|
|
|
|
</ui:CommandBar>
|
|
|
|
|
|
|
|
<controls:Card
|
|
|
|
Grid.Row="2"
|
|
|
|
Grid.Column="0"
|
|
|
|
Padding="0"
|
|
|
|
MinWidth="270"
|
|
|
|
VerticalAlignment="Stretch"
|
|
|
|
VerticalContentAlignment="Stretch"
|
|
|
|
Classes="transparent">
|
|
|
|
<ScrollViewer
|
|
|
|
IsVisible="{Binding !IsLoading}">
|
|
|
|
<ListBox
|
|
|
|
ItemsSource="{Binding Packages}"
|
|
|
|
SelectedItem="{Binding SelectedPackage}"
|
|
|
|
SelectionMode="AlwaysSelected">
|
|
|
|
<ListBox.ItemTemplate>
|
|
|
|
<DataTemplate DataType="vmDialogs:PythonPackagesItemViewModel">
|
|
|
|
<sg:SpacedGrid Margin="0,4" ColumnDefinitions="Auto,Auto">
|
|
|
|
<TextBlock
|
|
|
|
VerticalAlignment="Center"
|
|
|
|
Text="{Binding Package.Name}" Theme="{DynamicResource BodyStrongTextBlockStyle}" />
|
|
|
|
<TextBlock
|
|
|
|
Grid.Column="1"
|
|
|
|
VerticalAlignment="Center"
|
|
|
|
FontSize="13"
|
|
|
|
Foreground="{StaticResource ThemeLightGreyColor}"
|
|
|
|
Text="{Binding Package.Version}"
|
|
|
|
TextTrimming="CharacterEllipsis" />
|
|
|
|
</sg:SpacedGrid>
|
|
|
|
</DataTemplate>
|
|
|
|
</ListBox.ItemTemplate>
|
|
|
|
</ListBox>
|
|
|
|
</ScrollViewer>
|
|
|
|
</controls:Card>
|
|
|
|
|
|
|
|
<ProgressBar
|
|
|
|
Margin="32,16"
|
|
|
|
Grid.Row="2"
|
|
|
|
Grid.Column="0"
|
|
|
|
Grid.ColumnSpan="3"
|
|
|
|
IsIndeterminate="True"
|
|
|
|
IsEnabled="{Binding IsLoading}"
|
|
|
|
IsVisible="{Binding IsLoading}"/>
|
|
|
|
|
|
|
|
<GridSplitter
|
|
|
|
Grid.Row="0"
|
|
|
|
Grid.RowSpan="3"
|
|
|
|
Grid.Column="1"
|
|
|
|
IsEnabled="False"
|
|
|
|
Width="8" />
|
|
|
|
|
|
|
|
<TransitioningContentControl
|
|
|
|
Margin="8,0"
|
|
|
|
Grid.Row="1"
|
|
|
|
Grid.RowSpan="2"
|
|
|
|
Grid.Column="2"
|
|
|
|
HorizontalAlignment="Stretch"
|
|
|
|
HorizontalContentAlignment="Stretch"
|
|
|
|
Content="{Binding SelectedPackage}">
|
|
|
|
|
|
|
|
<TransitioningContentControl.Resources>
|
|
|
|
<input:StandardUICommand
|
|
|
|
x:Key="ModifySelectedPackageCommand"
|
|
|
|
Command="{Binding ModifySelectedPackageCommand}"/>
|
|
|
|
</TransitioningContentControl.Resources>
|
|
|
|
|
|
|
|
<TransitioningContentControl.ContentTemplate>
|
|
|
|
<DataTemplate DataType="{x:Type vmDialogs:PythonPackagesItemViewModel}">
|
|
|
|
<sg:SpacedGrid RowDefinitions="Auto,Auto,*" RowSpacing="16">
|
|
|
|
<TextBlock
|
|
|
|
Text="{Binding Package.Name}"
|
|
|
|
Theme="{DynamicResource TitleTextBlockStyle}" />
|
|
|
|
|
|
|
|
<StackPanel
|
|
|
|
Grid.Row="1"
|
|
|
|
Spacing="4"
|
|
|
|
Orientation="Horizontal">
|
|
|
|
<ComboBox
|
|
|
|
ItemsSource="{Binding AvailableVersions}"
|
|
|
|
SelectedItem="{Binding SelectedVersion}"/>
|
|
|
|
|
|
|
|
<!-- Upgrade button -->
|
|
|
|
<Button
|
|
|
|
Command="{StaticResource ModifySelectedPackageCommand}"
|
|
|
|
CommandParameter="{Binding}"
|
|
|
|
ToolTip.Tip="{x:Static lang:Resources.Action_Upgrade}"
|
|
|
|
IsVisible="{Binding CanUpgrade}"
|
|
|
|
Padding="5,5">
|
|
|
|
<fluentIcons:SymbolIcon
|
|
|
|
VerticalAlignment="Center"
|
|
|
|
FontSize="18"
|
|
|
|
Foreground="#3592c4"
|
|
|
|
Symbol="ArrowCircleUpRight" />
|
|
|
|
</Button>
|
|
|
|
|
|
|
|
<!-- Downgrade button -->
|
|
|
|
<Button
|
|
|
|
Command="{StaticResource ModifySelectedPackageCommand}"
|
|
|
|
CommandParameter="{Binding}"
|
|
|
|
ToolTip.Tip="{x:Static lang:Resources.Action_Downgrade}"
|
|
|
|
IsVisible="{Binding CanDowngrade}"
|
|
|
|
Padding="5,5">
|
|
|
|
<fluentIcons:SymbolIcon
|
|
|
|
VerticalAlignment="Center"
|
|
|
|
FontSize="18"
|
|
|
|
Symbol="ArrowCircleDownRight" />
|
|
|
|
</Button>
|
|
|
|
|
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Loaded content -->
|
|
|
|
<StackPanel
|
|
|
|
HorizontalAlignment="Left"
|
|
|
|
MaxWidth="200"
|
|
|
|
Grid.Row="2"
|
|
|
|
IsVisible="{Binding !IsLoading}">
|
|
|
|
<TextBlock
|
|
|
|
TextWrapping="WrapWithOverflow"
|
|
|
|
Text="{Binding PipShowResult.Author}" />
|
|
|
|
<TextBlock
|
|
|
|
TextWrapping="WrapWithOverflow"
|
|
|
|
Text="{Binding PipShowResult.License}" />
|
|
|
|
<ui:HyperlinkButton
|
|
|
|
NavigateUri="{Binding PipShowResult.HomePage}"/>
|
|
|
|
<TextBlock
|
|
|
|
TextWrapping="WrapWithOverflow"
|
|
|
|
Text="{Binding PipShowResult.Summary}" />
|
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
<!-- Loading indicator -->
|
|
|
|
<ProgressBar
|
|
|
|
Grid.Row="2"
|
|
|
|
Margin="32,16"
|
|
|
|
IsIndeterminate="True"
|
|
|
|
IsEnabled="{Binding IsLoading}"
|
|
|
|
IsVisible="{Binding IsLoading}"/>
|
|
|
|
</sg:SpacedGrid>
|
|
|
|
</DataTemplate>
|
|
|
|
</TransitioningContentControl.ContentTemplate>
|
|
|
|
</TransitioningContentControl>
|
|
|
|
|
|
|
|
<!--<Carousel
|
|
|
|
Grid.Row="2"
|
|
|
|
Grid.Column="2"
|
|
|
|
ItemsSource="{Binding Packages}"
|
|
|
|
AutoScrollToSelectedItem="True"
|
|
|
|
SelectedItem="{Binding SelectedPackage}">
|
|
|
|
<Carousel.PageTransition>
|
|
|
|
<CompositePageTransition>
|
|
|
|
<PageSlide Orientation="Vertical" Duration="0.167" >
|
|
|
|
~1~<PageSlide.SlideInEasing>
|
|
|
|
<SineEaseIn />
|
|
|
|
</PageSlide.SlideInEasing>
|
|
|
|
<PageSlide.SlideOutEasing>
|
|
|
|
<SineEaseOut />
|
|
|
|
</PageSlide.SlideOutEasing>@1@
|
|
|
|
</PageSlide>
|
|
|
|
~1~<CrossFade Duration="0.167" />@1@
|
|
|
|
</CompositePageTransition>
|
|
|
|
</Carousel.PageTransition>
|
|
|
|
<Carousel.ItemTemplate>
|
|
|
|
<DataTemplate DataType="{x:Type python:PipPackageInfo}">
|
|
|
|
<sg:SpacedGrid>
|
|
|
|
<TextBlock Theme="{DynamicResource BodyStrongTextBlockStyle}" Text="{Binding Name}"/>
|
|
|
|
</sg:SpacedGrid>
|
|
|
|
</DataTemplate>
|
|
|
|
</Carousel.ItemTemplate>
|
|
|
|
</Carousel>-->
|
|
|
|
|
|
|
|
</sg:SpacedGrid>
|
|
|
|
</controls:UserControlBase>
|