mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +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:avaloniaEdit="https://github.com/avaloniaui/avaloniaedit"
|
||||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||||
xmlns:fa="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
|
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"
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
x:Class="Artemis.UI.Controls.SplitMarkdownEditor">
|
x:Class="Artemis.UI.Controls.SplitMarkdownEditor">
|
||||||
|
<UserControl.Resources>
|
||||||
|
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||||
|
</UserControl.Resources>
|
||||||
<Grid RowDefinitions="Auto,*">
|
<Grid RowDefinitions="Auto,*">
|
||||||
<Grid Row="0" ColumnDefinitions="Auto,*">
|
<Grid Row="0" ColumnDefinitions="Auto,*">
|
||||||
<Label Grid.Column="0" Name="DescriptionEditorLabel" Target="DescriptionEditor" Margin="0 28 0 0" />
|
<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}"
|
Markdown="{CompiledBinding Document.Text, Mode=OneWay, ElementName=DescriptionEditor}"
|
||||||
MarkdownStyleName="FluentAvalonia"
|
MarkdownStyleName="FluentAvalonia"
|
||||||
SaveScrollValueWhenContentUpdated="True">
|
SaveScrollValueWhenContentUpdated="True">
|
||||||
|
<mdxaml:MarkdownScrollViewer.Engine>
|
||||||
|
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||||
|
</mdxaml:MarkdownScrollViewer.Engine>
|
||||||
<mdxaml:MarkdownScrollViewer.Styles>
|
<mdxaml:MarkdownScrollViewer.Styles>
|
||||||
<StyleInclude Source="/Styles/Markdown.axaml" />
|
<StyleInclude Source="/Styles/Markdown.axaml" />
|
||||||
</mdxaml:MarkdownScrollViewer.Styles>
|
</mdxaml:MarkdownScrollViewer.Styles>
|
||||||
|
|||||||
@ -65,7 +65,7 @@ public class RootViewModel : RoutableHostScreen<RoutableScreen>, IMainWindowProv
|
|||||||
|
|
||||||
router.SetRoot(this);
|
router.SetRoot(this);
|
||||||
mainWindowService.ConfigureMainWindowProvider(this);
|
mainWindowService.ConfigureMainWindowProvider(this);
|
||||||
|
|
||||||
OpenScreen = ReactiveCommand.Create<string?>(ExecuteOpenScreen);
|
OpenScreen = ReactiveCommand.Create<string?>(ExecuteOpenScreen);
|
||||||
OpenDebugger = ReactiveCommand.CreateFromTask(ExecuteOpenDebugger);
|
OpenDebugger = ReactiveCommand.CreateFromTask(ExecuteOpenDebugger);
|
||||||
Exit = ReactiveCommand.CreateFromTask(ExecuteExit);
|
Exit = ReactiveCommand.CreateFromTask(ExecuteExit);
|
||||||
@ -107,6 +107,9 @@ public class RootViewModel : RoutableHostScreen<RoutableScreen>, IMainWindowProv
|
|||||||
_windowService.ShowExceptionDialog("Fatal error occured during initialization", e);
|
_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; }
|
public SidebarViewModel SidebarViewModel { get; }
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
xmlns:converters="clr-namespace:Artemis.UI.Converters"
|
xmlns:converters="clr-namespace:Artemis.UI.Converters"
|
||||||
xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
|
xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
|
||||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||||
|
xmlns:ui="clr-namespace:Artemis.UI"
|
||||||
mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="1400"
|
mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="1400"
|
||||||
x:Class="Artemis.UI.Screens.Settings.Updating.ReleaseDetailsView"
|
x:Class="Artemis.UI.Screens.Settings.Updating.ReleaseDetailsView"
|
||||||
x:DataType="updating:ReleaseDetailsViewModel">
|
x:DataType="updating:ReleaseDetailsViewModel">
|
||||||
@ -14,6 +15,7 @@
|
|||||||
<shared:BytesToStringConverter x:Key="BytesToStringConverter" />
|
<shared:BytesToStringConverter x:Key="BytesToStringConverter" />
|
||||||
<converters:SubstringConverter x:Key="SubstringConverter" />
|
<converters:SubstringConverter x:Key="SubstringConverter" />
|
||||||
<converters:DateTimeConverter x:Key="DateTimeConverter" />
|
<converters:DateTimeConverter x:Key="DateTimeConverter" />
|
||||||
|
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
<UserControl.Styles>
|
<UserControl.Styles>
|
||||||
<Style Selector="Grid.info-container">
|
<Style Selector="Grid.info-container">
|
||||||
@ -142,6 +144,9 @@
|
|||||||
<Border Grid.Row="1" Classes="card-separator" />
|
<Border Grid.Row="1" Classes="card-separator" />
|
||||||
|
|
||||||
<mdxaml:MarkdownScrollViewer Grid.Row="2" Markdown="{CompiledBinding Release.Changelog}" MarkdownStyleName="FluentAvalonia">
|
<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>
|
<mdxaml:MarkdownScrollViewer.Styles>
|
||||||
<StyleInclude Source="/Styles/Markdown.axaml"/>
|
<StyleInclude Source="/Styles/Markdown.axaml"/>
|
||||||
</mdxaml:MarkdownScrollViewer.Styles>
|
</mdxaml:MarkdownScrollViewer.Styles>
|
||||||
|
|||||||
@ -4,9 +4,13 @@
|
|||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||||
xmlns:entryReleases="clr-namespace:Artemis.UI.Screens.Workshop.EntryReleases"
|
xmlns:entryReleases="clr-namespace:Artemis.UI.Screens.Workshop.EntryReleases"
|
||||||
|
xmlns:ui="clr-namespace:Artemis.UI"
|
||||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
x:Class="Artemis.UI.Screens.Workshop.EntryReleases.EntryReleaseView"
|
x:Class="Artemis.UI.Screens.Workshop.EntryReleases.EntryReleaseView"
|
||||||
x:DataType="entryReleases:EntryReleaseViewModel">
|
x:DataType="entryReleases:EntryReleaseViewModel">
|
||||||
|
<UserControl.Resources>
|
||||||
|
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||||
|
</UserControl.Resources>
|
||||||
<Grid RowDefinitions="Auto,Auto">
|
<Grid RowDefinitions="Auto,Auto">
|
||||||
<Border Grid.Row="0" Classes="card" Margin="0 0 0 10">
|
<Border Grid.Row="0" Classes="card" Margin="0 0 0 10">
|
||||||
<ContentControl Content="{CompiledBinding EntryReleaseInfoViewModel}"/>
|
<ContentControl Content="{CompiledBinding EntryReleaseInfoViewModel}"/>
|
||||||
@ -24,6 +28,9 @@
|
|||||||
Markdown="{CompiledBinding Release.Changelog}"
|
Markdown="{CompiledBinding Release.Changelog}"
|
||||||
MarkdownStyleName="FluentAvalonia"
|
MarkdownStyleName="FluentAvalonia"
|
||||||
IsVisible="{CompiledBinding Release.Changelog, Converter={x:Static StringConverters.IsNotNullOrEmpty}}">
|
IsVisible="{CompiledBinding Release.Changelog, Converter={x:Static StringConverters.IsNotNullOrEmpty}}">
|
||||||
|
<mdxaml:MarkdownScrollViewer.Engine>
|
||||||
|
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||||
|
</mdxaml:MarkdownScrollViewer.Engine>
|
||||||
<mdxaml:MarkdownScrollViewer.Styles>
|
<mdxaml:MarkdownScrollViewer.Styles>
|
||||||
<StyleInclude Source="/Styles/Markdown.axaml" />
|
<StyleInclude Source="/Styles/Markdown.axaml" />
|
||||||
</mdxaml:MarkdownScrollViewer.Styles>
|
</mdxaml:MarkdownScrollViewer.Styles>
|
||||||
|
|||||||
@ -4,9 +4,13 @@
|
|||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||||
xmlns:layout="clr-namespace:Artemis.UI.Screens.Workshop.Layout"
|
xmlns:layout="clr-namespace:Artemis.UI.Screens.Workshop.Layout"
|
||||||
|
xmlns:ui="clr-namespace:Artemis.UI"
|
||||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
x:Class="Artemis.UI.Screens.Workshop.Layout.LayoutDescriptionView"
|
x:Class="Artemis.UI.Screens.Workshop.Layout.LayoutDescriptionView"
|
||||||
x:DataType="layout:LayoutDescriptionViewModel">
|
x:DataType="layout:LayoutDescriptionViewModel">
|
||||||
|
<UserControl.Resources>
|
||||||
|
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||||
|
</UserControl.Resources>
|
||||||
<StackPanel Spacing="10">
|
<StackPanel Spacing="10">
|
||||||
<Border Classes="card">
|
<Border Classes="card">
|
||||||
<ContentControl Content="{CompiledBinding ReleaseInfoViewModel}"/>
|
<ContentControl Content="{CompiledBinding ReleaseInfoViewModel}"/>
|
||||||
@ -14,6 +18,9 @@
|
|||||||
|
|
||||||
<Border Classes="card">
|
<Border Classes="card">
|
||||||
<mdxaml:MarkdownScrollViewer Markdown="{CompiledBinding Entry.Description}" MarkdownStyleName="FluentAvalonia">
|
<mdxaml:MarkdownScrollViewer Markdown="{CompiledBinding Entry.Description}" MarkdownStyleName="FluentAvalonia">
|
||||||
|
<mdxaml:MarkdownScrollViewer.Engine>
|
||||||
|
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||||
|
</mdxaml:MarkdownScrollViewer.Engine>
|
||||||
<mdxaml:MarkdownScrollViewer.Styles>
|
<mdxaml:MarkdownScrollViewer.Styles>
|
||||||
<StyleInclude Source="/Styles/Markdown.axaml" />
|
<StyleInclude Source="/Styles/Markdown.axaml" />
|
||||||
</mdxaml:MarkdownScrollViewer.Styles>
|
</mdxaml:MarkdownScrollViewer.Styles>
|
||||||
|
|||||||
@ -4,9 +4,13 @@
|
|||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:plugins="clr-namespace:Artemis.UI.Screens.Workshop.Plugins"
|
xmlns:plugins="clr-namespace:Artemis.UI.Screens.Workshop.Plugins"
|
||||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||||
|
xmlns:ui="clr-namespace:Artemis.UI"
|
||||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
x:Class="Artemis.UI.Screens.Workshop.Plugins.PluginDescriptionView"
|
x:Class="Artemis.UI.Screens.Workshop.Plugins.PluginDescriptionView"
|
||||||
x:DataType="plugins:PluginDescriptionViewModel">
|
x:DataType="plugins:PluginDescriptionViewModel">
|
||||||
|
<UserControl.Resources>
|
||||||
|
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||||
|
</UserControl.Resources>
|
||||||
<StackPanel Spacing="10">
|
<StackPanel Spacing="10">
|
||||||
<Border Classes="card">
|
<Border Classes="card">
|
||||||
<ContentControl Content="{CompiledBinding ReleaseInfoViewModel}"/>
|
<ContentControl Content="{CompiledBinding ReleaseInfoViewModel}"/>
|
||||||
@ -14,6 +18,9 @@
|
|||||||
|
|
||||||
<Border Classes="card">
|
<Border Classes="card">
|
||||||
<mdxaml:MarkdownScrollViewer Markdown="{CompiledBinding Entry.Description}" MarkdownStyleName="FluentAvalonia">
|
<mdxaml:MarkdownScrollViewer Markdown="{CompiledBinding Entry.Description}" MarkdownStyleName="FluentAvalonia">
|
||||||
|
<mdxaml:MarkdownScrollViewer.Engine>
|
||||||
|
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||||
|
</mdxaml:MarkdownScrollViewer.Engine>
|
||||||
<mdxaml:MarkdownScrollViewer.Styles>
|
<mdxaml:MarkdownScrollViewer.Styles>
|
||||||
<StyleInclude Source="/Styles/Markdown.axaml" />
|
<StyleInclude Source="/Styles/Markdown.axaml" />
|
||||||
</mdxaml:MarkdownScrollViewer.Styles>
|
</mdxaml:MarkdownScrollViewer.Styles>
|
||||||
|
|||||||
@ -4,9 +4,13 @@
|
|||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:profile="clr-namespace:Artemis.UI.Screens.Workshop.Profile"
|
xmlns:profile="clr-namespace:Artemis.UI.Screens.Workshop.Profile"
|
||||||
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
xmlns:mdxaml="https://github.com/whistyun/Markdown.Avalonia.Tight"
|
||||||
|
xmlns:ui="clr-namespace:Artemis.UI"
|
||||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
x:Class="Artemis.UI.Screens.Workshop.Profile.ProfileDescriptionView"
|
x:Class="Artemis.UI.Screens.Workshop.Profile.ProfileDescriptionView"
|
||||||
x:DataType="profile:ProfileDescriptionViewModel">
|
x:DataType="profile:ProfileDescriptionViewModel">
|
||||||
|
<UserControl.Resources>
|
||||||
|
<ui:ArtemisLinkCommand x:Key="ArtemisLinkCommand" />
|
||||||
|
</UserControl.Resources>
|
||||||
<StackPanel Spacing="10">
|
<StackPanel Spacing="10">
|
||||||
<Border Classes="card">
|
<Border Classes="card">
|
||||||
<ContentControl Content="{CompiledBinding ReleaseInfoViewModel}"/>
|
<ContentControl Content="{CompiledBinding ReleaseInfoViewModel}"/>
|
||||||
@ -14,6 +18,9 @@
|
|||||||
|
|
||||||
<Border Classes="card">
|
<Border Classes="card">
|
||||||
<mdxaml:MarkdownScrollViewer Markdown="{CompiledBinding Entry.Description}" MarkdownStyleName="FluentAvalonia" Name="MarkdownScrollViewer" >
|
<mdxaml:MarkdownScrollViewer Markdown="{CompiledBinding Entry.Description}" MarkdownStyleName="FluentAvalonia" Name="MarkdownScrollViewer" >
|
||||||
|
<mdxaml:MarkdownScrollViewer.Engine>
|
||||||
|
<mdxaml:Markdown HyperlinkCommand="{StaticResource ArtemisLinkCommand}" />
|
||||||
|
</mdxaml:MarkdownScrollViewer.Engine>
|
||||||
<mdxaml:MarkdownScrollViewer.Styles>
|
<mdxaml:MarkdownScrollViewer.Styles>
|
||||||
<StyleInclude Source="/Styles/Markdown.axaml" />
|
<StyleInclude Source="/Styles/Markdown.axaml" />
|
||||||
</mdxaml:MarkdownScrollViewer.Styles>
|
</mdxaml:MarkdownScrollViewer.Styles>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user