Ejemplo n.º 1
0
		void RunTool(ExternalTool tool)
		{
			// Set these to somewhat useful values in case StingParser.Parse() passes when being called on one of them.
			string command = tool.Command;
			string args = tool.Arguments;

			// This needs it's own try/catch because if parsing these messages fail, the catch block after
			// the second try would also throw because MessageService.ShowError() calls StringParser.Parse()
			try {
				command = StringParser.Parse(tool.Command);
				args    = StringParser.Parse(tool.Arguments);
			} catch (Exception ex) {
				MessageService.ShowError("${res:XML.MainMenu.ToolMenu.ExternalTools.ExecutionFailed} '" + ex.Message);
				return;
			}
			
			if (tool.PromptForArguments) {
				args = MessageService.ShowInputBox(tool.MenuCommand, "${res:XML.MainMenu.ToolMenu.ExternalTools.EnterArguments}", args);
				if (args == null)
					return;
			}
			
			if (string.IsNullOrEmpty(args) || args.Trim('"', ' ').Length == 0) {
				args = "";
			}
			
			try {
				ProcessRunner processRunner = new ProcessRunner();
				processRunner.WorkingDirectory = DirectoryName.Create(StringParser.Parse(tool.InitialDirectory));
				if (tool.UseOutputPad) {
					processRunner.RunInOutputPadAsync(TaskService.BuildMessageViewCategory, command, ProcessRunner.CommandLineToArgumentArray(args)).FireAndForget();
				} else {
					processRunner.CreationFlags = ProcessCreationFlags.CreateNewConsole;
					processRunner.Start(command, ProcessRunner.CommandLineToArgumentArray(args));
				}
			} catch (Exception ex) {
				MessageService.ShowError("${res:XML.MainMenu.ToolMenu.ExternalTools.ExecutionFailed} '" + command + " " + args + "'\n" + ex.Message);
			}
		}
Ejemplo n.º 2
0
		void RunTool(ExternalTool tool)
		{
			// Set these to somewhat useful values in case StingParser.Parse() passes when being called on one of them.
			string command = tool.Command;
			string args = tool.Arguments;

			// This needs it's own try/catch because if parsing these messages fail, the catch block after
			// the second try would also throw because MessageService.ShowError() calls StringParser.Parse()
			try {
				command = StringParser.Parse(tool.Command);
				args    = StringParser.Parse(tool.Arguments);
			} catch (Exception ex) {
				MessageService.ShowError("${res:XML.MainMenu.ToolMenu.ExternalTools.ExecutionFailed} '" + ex.Message);
				return;
			}
			
			if (tool.PromptForArguments) {
				args = MessageService.ShowInputBox(tool.MenuCommand, "${res:XML.MainMenu.ToolMenu.ExternalTools.EnterArguments}", args);
				if (args == null)
					return;
			}
			
			try {
				if (tool.UseOutputPad) {
					ProcessRunner processRunner = new ProcessRunner();
					processRunner.LogStandardOutputAndError = false;
					processRunner.ProcessExited += ProcessExitEvent;
					processRunner.OutputLineReceived += process_OutputLineReceived;
					processRunner.ErrorLineReceived += process_OutputLineReceived;
					processRunner.WorkingDirectory = StringParser.Parse(tool.InitialDirectory);
					if (args == null || args.Length == 0 || args.Trim('"', ' ').Length == 0) {
						processRunner.Start(command);
					} else {
						processRunner.Start(command, args);
					}
				} else {
					ProcessStartInfo startinfo;
					if (args == null || args.Length == 0 || args.Trim('"', ' ').Length == 0) {
						startinfo = new ProcessStartInfo(command);
					} else {
						startinfo = new ProcessStartInfo(command, args);
					}
					startinfo.WorkingDirectory = StringParser.Parse(tool.InitialDirectory);
					Process process = new Process();
					process.StartInfo = startinfo;
					process.Start();
				}
			} catch (Exception ex) {
				MessageService.ShowError("${res:XML.MainMenu.ToolMenu.ExternalTools.ExecutionFailed} '" + command + " " + args + "'\n" + ex.Message);
			}
		}
 void AddButton_Click(object sender, RoutedEventArgs e)
 {
     EditEnable = true;
     ButtonsEnable = true;
     var newTool = new ExternalTool();
     listBox.Items.Add(newTool);
     SelectedTool = newTool;
     int i = listBox.SelectedIndex;
     listBox.SelectedIndex = listBox.Items.Count -1;
 }