public void TestXml() { if (Platform.IsWindows) { Assert.Inconclusive(); } var data = Create( @"<foo attr1 = ""1"" attr2 = ""2"" />"); //data.ColorStyle = SyntaxModeService.GetColorStyle ("Tango"); //data.Document.SyntaxMode = SyntaxModeService.GetSyntaxMode (data.Document, "application/xml"); string generatedRtf = RtfWriter.GenerateRtf(data); Assert.AreEqual( @"{\rtf1\ansi\deff0\adeflang1025 {\fonttbl {\f0\fnil\fprq1\fcharset128 Mono;} } {\colortbl ;\red68\green68\blue68;\red51\green100\blue164;\red245\green125\blue0;}\viewkind4\uc1\pard \f0 \fs20\cf1 \cf1 <\cf2 foo\line \tab\cf1 attr1 =\cf2 \cf3 ""1""\line \cf2\tab\cf1 attr2 =\cf2 \cf3 ""2""\line \cf1 />\line }" , generatedRtf); }
bool CopyTextToClipboard(string stringToCopy, bool asLine) { if (stringToCopy.Length > 0) { DataObject dataObject = new DataObject(); dataObject.SetData(DataFormats.UnicodeText, true, stringToCopy); if (asLine) { MemoryStream lineSelected = new MemoryStream(1); lineSelected.WriteByte(1); dataObject.SetData(LineSelectedType, false, lineSelected); } // Default has no highlighting, therefore we don't need RTF output if (_textArea.Document.HighlightingStrategy.Name != "Default") { dataObject.SetData(DataFormats.Rtf, RtfWriter.GenerateRtf(_textArea)); } OnCopyText(new CopyTextEventArgs(stringToCopy)); SafeSetClipboard(dataObject); return(true); } else { return(false); } }
private bool CopyTextToClipboard() { string selectedText = this.textArea.SelectionManager.SelectedText; if (selectedText.Length > 0) { for (int i = 0; i < 5; i++) { try { DataObject dataObject = new DataObject(); dataObject.SetData(DataFormats.UnicodeText, true, selectedText); if (this.textArea.Document.HighlightingStrategy.Name != "Default") { dataObject.SetData(DataFormats.Rtf, RtfWriter.GenerateRtf(this.textArea)); } this.OnCopyText(new CopyTextEventArgs(selectedText)); Clipboard.SetDataObject(dataObject, true); return(true); } catch (Exception arg) { Console.WriteLine("Got exception while Copy text to clipboard : " + arg); } Thread.Sleep(100); } } return(false); }
bool CopyTextToClipboard() { string str = textArea.SelectionManager.SelectedText; if (str.Length > 0) { // paste to clipboard // BIG HACK: STRANGE EXTERNAL EXCEPTION BUG WORKAROUND for (int i = 0; i < 5; ++i) { try { DataObject dataObject = new DataObject(); dataObject.SetData(DataFormats.UnicodeText, true, str); // Default has no highlighting, therefore we don't need RTF output if (textArea.Document.HighlightingStrategy.Name != "Default") { dataObject.SetData(DataFormats.Rtf, RtfWriter.GenerateRtf(textArea)); } OnCopyText(new CopyTextEventArgs(str)); Clipboard.SetDataObject(dataObject, true); return(true); } catch (Exception e) { Console.WriteLine("Got exception while Copy text to clipboard : " + e); } Thread.Sleep(100); } } return(false); }
public void SetData(SelectionData selection_data, uint info) { if (selection_data == null) { return; } switch (info) { case TextType: // Windows specific hack to work around bug: Bug 661973 - copy operation in TextEditor braks text lines with duplicate line endings when the file has CRLF // Remove when https://bugzilla.gnome.org/show_bug.cgi?id=640439 is fixed. if (Platform.IsWindows) { selection_data.Text = copiedDocument.Text.Replace("\r\n", "\n"); } else { selection_data.Text = copiedDocument.Text; } break; case RichTextType: var rtf = RtfWriter.GenerateRtf(copiedColoredChunks, docStyle, options); selection_data.Set(RTF_ATOM, UTF8_FORMAT, Encoding.UTF8.GetBytes(rtf)); break; case HTMLTextType: var html = HtmlWriter.GenerateHtml(copiedColoredChunks, docStyle, options); // Console.WriteLine ("html:" + html); selection_data.Set(HTML_ATOM, UTF8_FORMAT, Encoding.UTF8.GetBytes(html)); break; case MonoTextType: byte[] rawText = Encoding.UTF8.GetBytes(monoDocument.Text); var copyDataLength = (byte)(copyData != null ? copyData.Length : 0); var dataOffset = 1 + 1 + copyDataLength; byte[] data = new byte [rawText.Length + dataOffset]; data [1] = copyDataLength; if (copyDataLength > 0) { copyData.CopyTo(data, 2); } rawText.CopyTo(data, dataOffset); data [0] = 0; if (isBlockMode) { data [0] |= 1; } if (isLineSelectionMode) { data [0] |= 2; } selection_data.Set(MD_ATOM, UTF8_FORMAT, data); break; } }
public void TestSimpleCSharpRtf() { var data = Create("class Foo {}"); var style = SyntaxModeService.GetColorStyle(null, "TangoLight"); ISyntaxMode mode = SyntaxModeService.GetSyntaxMode(data.Document, "text/x-csharp"); string generatedRtf = RtfWriter.GenerateRtf(data.Document, mode, style, data.Options); Assert.AreEqual( @"{\rtf1\ansi\deff0\adeflang1025{\fonttbl{\f0\fnil\fprq1\fcharset128 Mono;}}{\colortbl ;\red92\green53\blue102;\red0\green0\blue0;}\viewkind4\uc1\pard\f0\fs20\cf1\b\cf1 class\b0\cf2 Foo \{\}\par" + Environment.NewLine + "}", generatedRtf); }
public void TestBug5628() { var data = Create("class Foo {}"); var style = SyntaxModeService.GetColorStyle(null, "TangoLight"); ISyntaxMode mode = null; string generatedRtf = RtfWriter.GenerateRtf(data.Document, mode, style, data.Options); Assert.AreEqual( @"{\rtf1\ansi\deff0\adeflang1025{\fonttbl{\f0\fnil\fprq1\fcharset128 Mono;}}{\colortbl ;}\viewkind4\uc1\pard\f0\fs20\cf1class Foo \{\}}", generatedRtf); }
public void SetData(SelectionData selection_data, uint info) { if (selection_data == null) { return; } switch (info) { case TextType: selection_data.Text = GetCopiedPlainText(); break; case RichTextType: var rtf = RtfWriter.GenerateRtf(copiedColoredChunks, docStyle, options); selection_data.Set(RTF_ATOM, UTF8_FORMAT, Encoding.UTF8.GetBytes(rtf)); break; case HTMLTextType: var html = HtmlWriter.GenerateHtml(copiedColoredChunks, docStyle, options); // Console.WriteLine ("html:" + html); selection_data.Set(HTML_ATOM, UTF8_FORMAT, Encoding.UTF8.GetBytes(html)); break; case MonoTextType: byte[] rawText = Encoding.UTF8.GetBytes(GetCopiedPlainText()); var copyDataLength = (byte)(copyData != null ? copyData.Length : 0); var dataOffset = 1 + 1 + copyDataLength; byte[] data = new byte [rawText.Length + dataOffset]; data [1] = copyDataLength; if (copyDataLength > 0) { copyData.CopyTo(data, 2); } rawText.CopyTo(data, dataOffset); data [0] = 0; if (isBlockMode) { data [0] |= 1; } if (isLineSelectionMode) { data [0] |= 2; } selection_data.Set(MD_ATOM, UTF8_FORMAT, data); break; } }
public void TestBug7386() { var data = Create("✔"); data.ColorStyle = SyntaxModeService.GetColorStyle("TangoLight"); string generatedRtf = RtfWriter.GenerateRtf(data); Assert.AreEqual( @"{\rtf1\ansi\deff0\adeflang1025 {\fonttbl {\f0\fnil\fprq1\fcharset128 Mono;} } {\colortbl ;}\viewkind4\uc1\pard \f0 \fs20\cf1 \uc1\u10004*}", generatedRtf); }
public void TestBug5628() { var data = Create("class Foo {}"); data.ColorStyle = SyntaxModeService.GetColorStyle("TangoLight"); string generatedRtf = RtfWriter.GenerateRtf(data); Assert.AreEqual( @"{\rtf1\ansi\deff0\adeflang1025 {\fonttbl {\f0\fnil\fprq1\fcharset128 Mono;} } {\colortbl ;\red68\green68\blue68;}\viewkind4\uc1\pard \f0 \fs20\cf1 \cf1 class Foo \{\}\line }", generatedRtf); }
public void SetData(uint info) { switch (info) { case TextType: Clipboard.SetText(GetCopiedPlainText()); break; case RichTextType: var rtf = RtfWriter.GenerateRtf(copiedColoredChunks, docStyle, options); Clipboard.SetData(TransferDataType.Rtf, Encoding.UTF8.GetBytes(rtf)); break; case HTMLTextType: var html = HtmlWriter.GenerateHtml(copiedColoredChunks, docStyle, options); Clipboard.SetData(TransferDataType.Html, Encoding.UTF8.GetBytes(html)); break; case MonoTextType: byte[] rawText = Encoding.UTF8.GetBytes(GetCopiedPlainText()); var copyDataLength = (byte)(copyData != null ? copyData.Length : 0); var dataOffset = 1 + 1 + copyDataLength; byte[] data = new byte[rawText.Length + dataOffset]; data[1] = copyDataLength; if (copyDataLength > 0) { copyData.CopyTo(data, 2); } rawText.CopyTo(data, dataOffset); data[0] = 0; if (isBlockMode) { data[0] |= 1; } if (isLineSelectionMode) { data[0] |= 2; } Clipboard.SetData(data); break; } }
public void TestBug7386() { if (Platform.IsWindows) { Assert.Inconclusive(); } var data = Create("✔"); //data.ColorStyle = SyntaxModeService.GetColorStyle ("Tango"); string generatedRtf = RtfWriter.GenerateRtf(data); Assert.AreEqual( @"{\rtf1\ansi\deff0\adeflang1025 {\fonttbl {\f0\fnil\fprq1\fcharset128 Mono;} } {\colortbl ;\red34\green34\blue34;}\viewkind4\uc1\pard \f0 \fs20\cf1 \cf1 \uc1\u10004*\line }", generatedRtf); }
public void TestSimpleCSharpRtf() { if (Platform.IsWindows) { Assert.Inconclusive(); } var data = Create("class Foo {}"); //data.ColorStyle = SyntaxModeService.GetColorStyle ("Tango"); //data.Document.SyntaxMode = SyntaxModeService.GetSyntaxMode (data.Document, "text/x-csharp"); string generatedRtf = RtfWriter.GenerateRtf(data); Assert.AreEqual( @"{\rtf1\ansi\deff0\adeflang1025 {\fonttbl {\f0\fnil\fprq1\fcharset128 Mono;} } {\colortbl ;\red51\green100\blue164;\red34\green34\blue34;}\viewkind4\uc1\pard \f0 \fs20\cf1 \cf1 class\cf2 Foo \{\}\line }", generatedRtf); }
bool CopyTextToClipboard(string stringToCopy) { if (stringToCopy.Length > 0) { DataObject dataObject = new DataObject(); dataObject.SetData(DataFormats.UnicodeText, true, stringToCopy); // Default has no highlighting, therefore we don't need RTF output if (textArea.Document.HighlightingStrategy.Name != "Default") { dataObject.SetData(DataFormats.Rtf, RtfWriter.GenerateRtf(textArea)); } OnCopyText(new CopyTextEventArgs(stringToCopy)); // Work around ExternalException bug. (SD2-426) // Best reproducable inside Virtual PC. // SetDataObject has "retry" parameters, but apparently a call to "DoEvents" // is necessary for the workaround to work. int i = 0; while (true) { try { Clipboard.SetDataObject(dataObject, true, 5, 50); return(true); } catch (ExternalException) { if (i++ > 5) { throw; } } System.Threading.Thread.Sleep(50); Application.DoEvents(); System.Threading.Thread.Sleep(50); } } else { return(false); } }
bool CopyTextToClipboard(string stringToCopy) { bool ret = false; if (stringToCopy.Length > 0) { DataObject dataObject = new DataObject(); dataObject.SetData(DataFormats.UnicodeText, true, stringToCopy); // Default has no highlighting, therefore we don't need RTF output if (textArea.Document.HighlightingStrategy.Name != "Default") { dataObject.SetData(DataFormats.Rtf, RtfWriter.GenerateRtf(textArea)); } OnCopyText(new CopyTextEventArgs(stringToCopy)); SafeSetClipboard(dataObject); ret = true; } return(ret); }
private bool CopyTextToClipboard(string stringToCopy, bool asLine) { if (stringToCopy.Length <= 0) { return(false); } DataObject dataObject = new DataObject(); dataObject.SetData(DataFormats.UnicodeText, true, stringToCopy); if (asLine) { MemoryStream memoryStream = new MemoryStream(1); memoryStream.WriteByte(1); dataObject.SetData("MSDEVLineSelect", false, memoryStream); } if (this.textArea.Document.HighlightingStrategy.Name != "Default") { dataObject.SetData(DataFormats.Rtf, RtfWriter.GenerateRtf(this.textArea)); } this.OnCopyText(new CopyTextEventArgs(stringToCopy)); TextAreaClipboardHandler.SafeSetClipboard(dataObject); return(true); }
bool CopyTextToClipboard(string stringToCopy, bool asLine) { if (stringToCopy.Length > 0) { DataObject dataObject = new DataObject(); dataObject.SetData(DataFormats.UnicodeText, true, stringToCopy); if (asLine) { MemoryStream lineSelected = new MemoryStream(1); lineSelected.WriteByte(1); dataObject.SetData(LineSelectedType, false, lineSelected); } // Default has no highlighting, therefore we don't need RTF output if (textArea.Document.HighlightingStrategy.Name != "Default") { dataObject.SetData(DataFormats.Rtf, RtfWriter.GenerateRtf(textArea)); } OnCopyText(new CopyTextEventArgs(stringToCopy)); // Work around ExternalException bug. (SD2-426) // Best reproducable inside Virtual PC. try { Clipboard.SetDataObject(dataObject, true, 10, 50); } catch (ExternalException) { Application.DoEvents(); try { Clipboard.SetDataObject(dataObject, true, 10, 50); } catch (ExternalException) {} } return(true); } else { return(false); } }
public void SetData(SelectionData selection_data, uint info) { if (selection_data == null) { return; } switch (info) { case TextType: // Windows specific hack to work around bug: Bug 661973 - copy operation in TextEditor braks text lines with duplicate line endings when the file has CRLF // Remove when https://bugzilla.gnome.org/show_bug.cgi?id=640439 is fixed. if (Platform.IsWindows) { selection_data.Text = copiedDocument.Text.Replace("\r\n", "\n"); } else { selection_data.Text = copiedDocument.Text; } break; case RichTextType: selection_data.Set(RTF_ATOM, UTF8_FORMAT, System.Text.Encoding.UTF8.GetBytes(RtfWriter.GenerateRtf(copiedDocument, mode, docStyle, options))); break; case MonoTextType: byte[] rawText = System.Text.Encoding.UTF8.GetBytes(monoDocument.Text); byte[] data = new byte [rawText.Length + 1]; rawText.CopyTo(data, 1); data [0] = 0; if (isBlockMode) { data [0] |= 1; } if (isLineSelectionMode) { data [0] |= 2; } selection_data.Set(MD_ATOM, UTF8_FORMAT, data); break; } }