/// <summary> /// Adds the <see cref="ScriptControlVM"/> instance to the <see cref="ITextView"/> properties /// </summary> /// <param name="vm">Script control</param> /// <param name="textView">REPL editor text view</param> public static void AddInstance(ScriptControlVM vm, ITextView textView) { if (vm == null) throw new ArgumentNullException(nameof(vm)); if (textView == null) throw new ArgumentNullException(nameof(textView)); textView.Properties.AddProperty(Key, vm); }
public void Execute(ScriptControlVM vm, string[] args) { vm.ReplEditor.OutputPrintLine(dnSpy_Scripting_Roslyn_Resources.HelpKeyboardShortcuts, BoxedTextColor.ReplOutputText); Print(vm, keyboardShortcuts, BoxedTextColor.PreprocessorKeyword, BoxedTextColor.ReplOutputText); vm.ReplEditor.OutputPrintLine(dnSpy_Scripting_Roslyn_Resources.HelpReplCommands, BoxedTextColor.ReplOutputText); PrintCommands(vm, BoxedTextColor.PreprocessorKeyword, BoxedTextColor.ReplOutputText); vm.ReplEditor.OutputPrintLine(dnSpy_Scripting_Roslyn_Resources.HelpScriptDirectives, BoxedTextColor.ReplOutputText); Print(vm, scriptDirectives, BoxedTextColor.PreprocessorKeyword, BoxedTextColor.ReplOutputText); }
public void Execute(ScriptControlVM vm, string[] args) { vm.ReplEditor.OutputPrintLine(dnSpy_Scripting_Roslyn_Resources.HelpKeyboardShortcuts); Print(vm, keyboardShortcuts); vm.ReplEditor.OutputPrintLine(dnSpy_Scripting_Roslyn_Resources.HelpReplCommands); Print(vm, GetCommands(vm)); vm.ReplEditor.OutputPrintLine(dnSpy_Scripting_Roslyn_Resources.HelpScriptDirectives); Print(vm, scriptDirectives); }
protected ScriptContent(IThemeManager themeManager, IReplEditorCreator replEditorCreator, ReplEditorOptions replOpts, IServiceLocator serviceLocator) { this.replEditorUI = replEditorCreator.Create(replOpts); this.scriptControl = new ScriptControl(); this.scriptControl.SetTextEditorObject(this.replEditorUI.UIObject); this.scriptControlVM = CreateScriptControlVM(this.replEditorUI, serviceLocator); this.scriptControlVM.OnCommandExecuted += ScriptControlVM_OnCommandExecuted; this.replEditorUI.Tag = this; this.scriptControl.DataContext = this.scriptControlVM; themeManager.ThemeChanged += ThemeManager_ThemeChanged; }
protected ScriptContent(IReplEditorProvider replEditorProvider, ReplEditorOptions replOpts, ReplSettings replSettings, IServiceLocator serviceLocator, string appearanceCategory) { replOpts.Roles.Add(PredefinedDsTextViewRoles.RoslynRepl); replEditor = replEditorProvider.Create(replOpts); replEditor.TextView.Options.SetOptionValue(DefaultWpfViewOptions.AppearanceCategory, appearanceCategory); scriptControl = new ScriptControl(); scriptControl.SetTextEditorObject(replEditor.UIObject); scriptControlVM = CreateScriptControlVM(replEditor, serviceLocator, replSettings); scriptControlVM.OnCommandExecuted += ScriptControlVM_OnCommandExecuted; RoslynReplEditorUtils.AddInstance(scriptControlVM, replEditor.TextView); replEditor.Tag = this; scriptControl.DataContext = scriptControlVM; }
void Print(ScriptControlVM vm, IEnumerable<Tuple<string, string>> descs, object color1, object color2) { foreach (var t in descs) { vm.ReplEditor.OutputPrint(" ", BoxedTextColor.ReplOutputText); vm.ReplEditor.OutputPrint(t.Item1, color1); int len = LEFT_COL_LEN - t.Item1.Length; if (len > 0) vm.ReplEditor.OutputPrint(new string(' ', len), BoxedTextColor.ReplOutputText); vm.ReplEditor.OutputPrint(" ", BoxedTextColor.ReplOutputText); vm.ReplEditor.OutputPrint(t.Item2, color2); vm.ReplEditor.OutputPrintLine(string.Empty, BoxedTextColor.ReplOutputText); } }
void PrintCommands(ScriptControlVM vm, object color1, object color2) { const string CMDS_SEP = ", "; var hash = new HashSet<IScriptCommand>(vm.ScriptCommands); var cmds = hash.Select(a => Tuple.Create(a.Names.Select(b => ScriptControlVM.CMD_PREFIX + b).ToArray(), a.ShortDescription)) .OrderBy(a => a.Item1[0], StringComparer.OrdinalIgnoreCase); foreach (var t in cmds) { vm.ReplEditor.OutputPrint(" ", BoxedTextColor.ReplOutputText); int cmdsLen = t.Item1.Sum(a => a.Length) + CMDS_SEP.Length * (t.Item1.Length - 1); for (int i = 0; i < t.Item1.Length; i++) { if (i > 0) vm.ReplEditor.OutputPrint(", ", BoxedTextColor.ReplOutputText); vm.ReplEditor.OutputPrint(t.Item1[i], color1); } int len = LEFT_COL_LEN - cmdsLen; if (len > 0) vm.ReplEditor.OutputPrint(new string(' ', len), BoxedTextColor.ReplOutputText); vm.ReplEditor.OutputPrint(" ", BoxedTextColor.ReplOutputText); vm.ReplEditor.OutputPrint(t.Item2, color2); vm.ReplEditor.OutputPrintLine(string.Empty, BoxedTextColor.ReplOutputText); } }
void Print(ScriptControlVM vm, IEnumerable<Tuple<string, string>> descs) { foreach (var t in descs) vm.ReplEditor.OutputPrintLine(string.Format(" {0,-20} {1}", t.Item1, t.Item2)); }
IEnumerable<Tuple<string, string>> GetCommands(ScriptControlVM vm) { var hash = new HashSet<IScriptCommand>(vm.ScriptCommands); return hash.Select(a => Tuple.Create(string.Join(NAMES_SEP, a.Names.Select(b => ScriptControlVM.CMD_PREFIX + b).ToArray()), a.ShortDescription)) .OrderBy(a => a.Item1, StringComparer.OrdinalIgnoreCase); }
public void Execute(ScriptControlVM vm, string[] args) { bool noconfig = args.Any(a => a == "noconfig"); vm.Reset(!noconfig); }
public void Execute(ScriptControlVM vm, string[] args) { vm.ReplEditor.Clear(); }