Sicherung
This commit is contained in:
90
Kalk/Kalk.Core/KalkActionObject.cs
Normal file
90
Kalk/Kalk.Core/KalkActionObject.cs
Normal file
@@ -0,0 +1,90 @@
|
||||
using System;
|
||||
using Scriban.Runtime;
|
||||
|
||||
namespace Kalk.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// An action object returned by <see cref="KalkEngine.Action"/> and used when evaluating shortcuts.
|
||||
/// </summary>
|
||||
public class KalkActionObject : ScriptObject
|
||||
{
|
||||
public KalkActionObject(string action)
|
||||
{
|
||||
Action = action ?? throw new ArgumentNullException(nameof(action));
|
||||
}
|
||||
|
||||
public string Action
|
||||
{
|
||||
get => GetSafeValue<string>("action");
|
||||
set => SetValue("action", value, false);
|
||||
}
|
||||
|
||||
public void Call(Action<KalkAction> run)
|
||||
{
|
||||
var action = Action;
|
||||
if (action == null) return;
|
||||
switch (action)
|
||||
{
|
||||
case "cursor_left":
|
||||
run(KalkAction.CursorLeft);
|
||||
break;
|
||||
case "cursor_right":
|
||||
run(KalkAction.CursorRight);
|
||||
break;
|
||||
case "history_previous":
|
||||
run(KalkAction.HistoryPrevious);
|
||||
break;
|
||||
case "history_next":
|
||||
run(KalkAction.HistoryNext);
|
||||
break;
|
||||
case "copy":
|
||||
run(KalkAction.CopySelection);
|
||||
break;
|
||||
case "cut":
|
||||
run(KalkAction.CutSelection);
|
||||
break;
|
||||
case "paste":
|
||||
run(KalkAction.PasteClipboard);
|
||||
break;
|
||||
case "cursor_word_left":
|
||||
run(KalkAction.CursorLeftWord);
|
||||
break;
|
||||
case "cursor_word_right":
|
||||
run(KalkAction.CursorRightWord);
|
||||
break;
|
||||
case "cursor_line_start":
|
||||
run(KalkAction.CursorStartOfLine);
|
||||
break;
|
||||
case "cursor_line_end":
|
||||
run(KalkAction.CursorEndOfLine);
|
||||
break;
|
||||
case "completion":
|
||||
run(KalkAction.Completion);
|
||||
break;
|
||||
case "delete_left":
|
||||
run(KalkAction.DeleteCharacterLeft);
|
||||
break;
|
||||
case "delete_right":
|
||||
run(KalkAction.DeleteCharacterRight);
|
||||
break;
|
||||
case "delete_word_left":
|
||||
run(KalkAction.DeleteWordLeft);
|
||||
break;
|
||||
case "delete_word_right":
|
||||
run(KalkAction.DeleteWordRight);
|
||||
break;
|
||||
case "validate_line":
|
||||
run(KalkAction.ValidateLine);
|
||||
break;
|
||||
case "force_validate_line":
|
||||
run(KalkAction.ForceValidateLine);
|
||||
break;
|
||||
case "exit":
|
||||
run(KalkAction.Exit);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException($"Action `{action}` is not supported", nameof(action));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user