mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-12 13:28:33 +00:00
Merge branch 'development'
This commit is contained in:
commit
0e911d68ba
30
src/Artemis.UI/ArtemisLinkCommand.cs
Normal file
30
src/Artemis.UI/ArtemisLinkCommand.cs
Normal file
@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Windows.Input;
|
||||
using Artemis.Core;
|
||||
using Artemis.UI.Shared.Routing;
|
||||
|
||||
namespace Artemis.UI;
|
||||
|
||||
public class ArtemisLinkCommand: ICommand
|
||||
{
|
||||
public static IRouter? Router;
|
||||
|
||||
/// <inheritdoc />
|
||||
public bool CanExecute(object? parameter) => true;
|
||||
|
||||
/// <inheritdoc />
|
||||
public void Execute(object? parameter)
|
||||
{
|
||||
if (parameter is not string url || !Uri.TryCreate(url, UriKind.Absolute, out Uri? uri))
|
||||
return;
|
||||
|
||||
if (uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps)
|
||||
Utilities.OpenUrl(url);
|
||||
else if (uri.Scheme == "artemis")
|
||||
Router?.Navigate(uri.Host + uri.LocalPath);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public event EventHandler? CanExecuteChanged;
|
||||
|
||||
}
|
||||
@ -5,8 +5,13 @@
|
||||
xmlns:avaloniaEdit="https://github.com/avaloniaui/avaloniaedit"
|
||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||
xmlns:fa="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
|
||||
xmlns:input="clr-namespace:System.Windows.Input;assembly=System.ObjectModel"
|
||||
xmlns:ui="clr-namespace:Artemis.UI"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="Artemis.UI.Controls.SplitMarkdownEditor">
|
||||
<UserControl.Resources>
|
||||
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||
</UserControl.Resources>
|
||||
<Grid RowDefinitions="Auto,*">
|
||||
<Grid Row="0" ColumnDefinitions="Auto,*">
|
||||
<Label Grid.Column="0" Name="DescriptionEditorLabel" Target="DescriptionEditor" Margin="0 28 0 0" />
|
||||
@ -41,6 +46,9 @@
|
||||
Markdown="{CompiledBinding Document.Text, Mode=OneWay, ElementName=DescriptionEditor}"
|
||||
MarkdownStyleName="FluentAvalonia"
|
||||
SaveScrollValueWhenContentUpdated="True">
|
||||
<mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||
</mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:MarkdownScrollViewer.Styles>
|
||||
<StyleInclude Source="/Styles/Markdown.axaml" />
|
||||
</mdxaml:MarkdownScrollViewer.Styles>
|
||||
|
||||
@ -65,7 +65,7 @@ public class RootViewModel : RoutableHostScreen<RoutableScreen>, IMainWindowProv
|
||||
|
||||
router.SetRoot(this);
|
||||
mainWindowService.ConfigureMainWindowProvider(this);
|
||||
|
||||
|
||||
OpenScreen = ReactiveCommand.Create<string?>(ExecuteOpenScreen);
|
||||
OpenDebugger = ReactiveCommand.CreateFromTask(ExecuteOpenDebugger);
|
||||
Exit = ReactiveCommand.CreateFromTask(ExecuteExit);
|
||||
@ -107,6 +107,9 @@ public class RootViewModel : RoutableHostScreen<RoutableScreen>, IMainWindowProv
|
||||
_windowService.ShowExceptionDialog("Fatal error occured during initialization", e);
|
||||
}
|
||||
});
|
||||
|
||||
// This isn't pretty, but it's the most straightforward way to make sure the ArtemisLinkCommand has access to the router
|
||||
ArtemisLinkCommand.Router = router;
|
||||
}
|
||||
|
||||
public SidebarViewModel SidebarViewModel { get; }
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
xmlns:converters="clr-namespace:Artemis.UI.Converters"
|
||||
xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
|
||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||
xmlns:ui="clr-namespace:Artemis.UI"
|
||||
mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="1400"
|
||||
x:Class="Artemis.UI.Screens.Settings.Updating.ReleaseDetailsView"
|
||||
x:DataType="updating:ReleaseDetailsViewModel">
|
||||
@ -14,6 +15,7 @@
|
||||
<shared:BytesToStringConverter x:Key="BytesToStringConverter" />
|
||||
<converters:SubstringConverter x:Key="SubstringConverter" />
|
||||
<converters:DateTimeConverter x:Key="DateTimeConverter" />
|
||||
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||
</UserControl.Resources>
|
||||
<UserControl.Styles>
|
||||
<Style Selector="Grid.info-container">
|
||||
@ -142,6 +144,9 @@
|
||||
<Border Grid.Row="1" Classes="card-separator" />
|
||||
|
||||
<mdxaml:MarkdownScrollViewer Grid.Row="2" Markdown="{CompiledBinding Release.Changelog}" MarkdownStyleName="FluentAvalonia">
|
||||
<mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||
</mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:MarkdownScrollViewer.Styles>
|
||||
<StyleInclude Source="/Styles/Markdown.axaml"/>
|
||||
</mdxaml:MarkdownScrollViewer.Styles>
|
||||
|
||||
@ -4,9 +4,13 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||
xmlns:entryReleases="clr-namespace:Artemis.UI.Screens.Workshop.EntryReleases"
|
||||
xmlns:ui="clr-namespace:Artemis.UI"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="Artemis.UI.Screens.Workshop.EntryReleases.EntryReleaseView"
|
||||
x:DataType="entryReleases:EntryReleaseViewModel">
|
||||
<UserControl.Resources>
|
||||
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||
</UserControl.Resources>
|
||||
<Grid RowDefinitions="Auto,Auto">
|
||||
<Border Grid.Row="0" Classes="card" Margin="0 0 0 10">
|
||||
<ContentControl Content="{CompiledBinding EntryReleaseInfoViewModel}"/>
|
||||
@ -24,6 +28,9 @@
|
||||
Markdown="{CompiledBinding Release.Changelog}"
|
||||
MarkdownStyleName="FluentAvalonia"
|
||||
IsVisible="{CompiledBinding Release.Changelog, Converter={x:Static StringConverters.IsNotNullOrEmpty}}">
|
||||
<mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||
</mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:MarkdownScrollViewer.Styles>
|
||||
<StyleInclude Source="/Styles/Markdown.axaml" />
|
||||
</mdxaml:MarkdownScrollViewer.Styles>
|
||||
|
||||
@ -4,9 +4,13 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||
xmlns:layout="clr-namespace:Artemis.UI.Screens.Workshop.Layout"
|
||||
xmlns:ui="clr-namespace:Artemis.UI"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="Artemis.UI.Screens.Workshop.Layout.LayoutDescriptionView"
|
||||
x:DataType="layout:LayoutDescriptionViewModel">
|
||||
<UserControl.Resources>
|
||||
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||
</UserControl.Resources>
|
||||
<StackPanel Spacing="10">
|
||||
<Border Classes="card">
|
||||
<ContentControl Content="{CompiledBinding ReleaseInfoViewModel}"/>
|
||||
@ -14,6 +18,9 @@
|
||||
|
||||
<Border Classes="card">
|
||||
<mdxaml:MarkdownScrollViewer Markdown="{CompiledBinding Entry.Description}" MarkdownStyleName="FluentAvalonia">
|
||||
<mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||
</mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:MarkdownScrollViewer.Styles>
|
||||
<StyleInclude Source="/Styles/Markdown.axaml" />
|
||||
</mdxaml:MarkdownScrollViewer.Styles>
|
||||
|
||||
@ -4,9 +4,13 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:plugins="clr-namespace:Artemis.UI.Screens.Workshop.Plugins"
|
||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||
xmlns:ui="clr-namespace:Artemis.UI"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="Artemis.UI.Screens.Workshop.Plugins.PluginDescriptionView"
|
||||
x:DataType="plugins:PluginDescriptionViewModel">
|
||||
<UserControl.Resources>
|
||||
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||
</UserControl.Resources>
|
||||
<StackPanel Spacing="10">
|
||||
<Border Classes="card">
|
||||
<ContentControl Content="{CompiledBinding ReleaseInfoViewModel}"/>
|
||||
@ -14,6 +18,9 @@
|
||||
|
||||
<Border Classes="card">
|
||||
<mdxaml:MarkdownScrollViewer Markdown="{CompiledBinding Entry.Description}" MarkdownStyleName="FluentAvalonia">
|
||||
<mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||
</mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:MarkdownScrollViewer.Styles>
|
||||
<StyleInclude Source="/Styles/Markdown.axaml" />
|
||||
</mdxaml:MarkdownScrollViewer.Styles>
|
||||
|
||||
@ -4,9 +4,13 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:profile="clr-namespace:Artemis.UI.Screens.Workshop.Profile"
|
||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||
xmlns:ui="clr-namespace:Artemis.UI"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||
x:Class="Artemis.UI.Screens.Workshop.Profile.ProfileDescriptionView"
|
||||
x:DataType="profile:ProfileDescriptionViewModel">
|
||||
<UserControl.Resources>
|
||||
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||
</UserControl.Resources>
|
||||
<StackPanel Spacing="10">
|
||||
<Border Classes="card">
|
||||
<ContentControl Content="{CompiledBinding ReleaseInfoViewModel}"/>
|
||||
@ -14,6 +18,9 @@
|
||||
|
||||
<Border Classes="card">
|
||||
<mdxaml:MarkdownScrollViewer Markdown="{CompiledBinding Entry.Description}" MarkdownStyleName="FluentAvalonia" Name="MarkdownScrollViewer" >
|
||||
<mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||
</mdxaml:MarkdownScrollViewer.Engine>
|
||||
<mdxaml:MarkdownScrollViewer.Styles>
|
||||
<StyleInclude Source="/Styles/Markdown.axaml" />
|
||||
</mdxaml:MarkdownScrollViewer.Styles>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user