/// <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);
		}
Example #2
0
		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);
		}
Example #3
0
 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);
 }
Example #4
0
		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;
		}
Example #5
0
		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;
		}
Example #6
0
		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);
			}
		}
Example #7
0
		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);
			}
		}
Example #8
0
 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));
 }
Example #9
0
 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);
 }
Example #10
0
 public void Execute(ScriptControlVM vm, string[] args)
 {
     bool noconfig = args.Any(a => a == "noconfig");
     vm.Reset(!noconfig);
 }
Example #11
0
 public void Execute(ScriptControlVM vm, string[] args)
 {
     vm.ReplEditor.Clear();
 }