/// <summary> /// Copies any text from the terminal and replaces all ANSI escape codes with their known /// mud color codes. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AvalonTerminalContextMenuCopyWithMudColors_OnClick(object sender, RoutedEventArgs e) { try { var item = sender as MenuItem; var cm = (ContextMenu)item?.Parent; var popup = (Popup)cm?.Parent; var terminal = popup?.PlacementTarget as AvalonTerminal; if (terminal == null) { return; } // Remove any ANSI codes from the selected text. var sb = new StringBuilder(terminal.SelectedText); Colorizer.AnsiToMudColorCodes(sb); Clipboard.SetDataObject(sb.ToString(), true); } catch (Exception ex) { this.Interp.Conveyor.EchoLog(ex.Message, Common.Models.LogType.Error); if (!string.IsNullOrWhiteSpace(ex.StackTrace)) { this.Interp.Conveyor.EchoLog(ex.StackTrace, Common.Models.LogType.Error); } } }
/// <summary> /// Copies any text from the terminal and replaces all ANSI escape codes with their known /// mud color codes. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AvalonTerminalContextMenuCopyWithMudColors_OnClick(object sender, RoutedEventArgs e) { var item = sender as MenuItem; var cm = (ContextMenu)item?.Parent; var popup = (Popup)cm?.Parent; var terminal = popup?.PlacementTarget as AvalonTerminal; if (terminal == null) { return; } // Remove any ANSI codes from the selected text. var sb = new StringBuilder(terminal.SelectedText); Colorizer.AnsiToMudColorCodes(sb); Clipboard.SetText(sb.ToString()); }