You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.7 KiB
55 lines
1.7 KiB
using System; |
|
using Avalonia.Controls; |
|
using Avalonia.Media; |
|
using Avalonia.Threading; |
|
using AvaloniaEdit; |
|
using AvaloniaEdit.TextMate; |
|
using StabilityMatrix.Avalonia.Controls; |
|
using StabilityMatrix.Core.Helper; |
|
using TextMateSharp.Grammars; |
|
|
|
namespace StabilityMatrix.Avalonia.Views.Dialogs; |
|
|
|
public partial class PackageModificationDialog : UserControlBase |
|
{ |
|
public PackageModificationDialog() |
|
{ |
|
InitializeComponent(); |
|
|
|
var editor = this.FindControl<TextEditor>("Console"); |
|
if (editor is not null) |
|
{ |
|
var options = new RegistryOptions(ThemeName.DarkPlus); |
|
|
|
// Config hyperlinks |
|
editor.TextArea.Options.EnableHyperlinks = true; |
|
editor.TextArea.Options.RequireControlModifierForHyperlinkClick = false; |
|
editor.TextArea.TextView.LinkTextForegroundBrush = Brushes.Coral; |
|
|
|
var textMate = editor.InstallTextMate(options); |
|
var scope = options.GetScopeByLanguageId("log"); |
|
|
|
if (scope is null) |
|
throw new InvalidOperationException("Scope is null"); |
|
|
|
textMate.SetGrammar(scope); |
|
textMate.SetTheme(options.LoadTheme(ThemeName.DarkPlus)); |
|
|
|
editor.Options.ShowBoxForControlCharacters = false; |
|
} |
|
|
|
EventManager.Instance.ScrollToBottomRequested += (_, _) => |
|
{ |
|
Dispatcher |
|
.UIThread |
|
.Invoke(() => |
|
{ |
|
var editor = this.FindControl<TextEditor>("Console"); |
|
if (editor?.Document == null) |
|
return; |
|
var line = Math.Max(editor.Document.LineCount - 1, 1); |
|
editor.ScrollToLine(line); |
|
}); |
|
}; |
|
} |
|
}
|
|
|