Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
            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;
                }
            }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
            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;
                }
            }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #11
0
            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;
                }
            }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
            }
        }
Пример #15
0
        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);
        }
Пример #17
0
        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);
            }
        }
Пример #18
0
            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;
                }
            }