コード例 #1
0
        public void TestText()
        {
            DataObject d = new DataObject();

            d.SetText("yo");

            Assert.AreEqual(false, d.ContainsAudio(), "A1");
            Assert.AreEqual(false, d.ContainsFileDropList(), "A2");
            Assert.AreEqual(false, d.ContainsImage(), "A3");
            Assert.AreEqual(true, d.ContainsText(), "A4");
            Assert.AreEqual(false, d.ContainsText(TextDataFormat.CommaSeparatedValue), "A5");

            Assert.AreEqual("yo", d.GetText(), "A6");
            Assert.AreEqual("yo", d.GetData(DataFormats.StringFormat), "A6-1");

            d.SetText("<html></html>", TextDataFormat.Html);
            Assert.AreEqual(true, d.ContainsText(), "A7");
            Assert.AreEqual(false, d.ContainsText(TextDataFormat.CommaSeparatedValue), "A8");
            Assert.AreEqual(true, d.ContainsText(TextDataFormat.Html), "A9");
            Assert.AreEqual(false, d.ContainsText(TextDataFormat.Rtf), "A10");
            Assert.AreEqual(true, d.ContainsText(TextDataFormat.Text), "A11");
            Assert.AreEqual(true, d.ContainsText(TextDataFormat.UnicodeText), "A12");

            // directly put a string
            d.SetData("yo");

            Assert.AreEqual(true, d.ContainsText(TextDataFormat.Text), "A13");
            Assert.AreEqual(true, d.ContainsText(TextDataFormat.UnicodeText), "A14");

            Assert.AreEqual("yo", d.GetData(DataFormats.StringFormat), "A15");
            Assert.AreEqual("yo", d.GetData(DataFormats.Text), "A16");
            Assert.AreEqual("yo", d.GetData(DataFormats.UnicodeText), "A17");
        }
コード例 #2
0
        public override bool IsApplicable(EditableView pnlView)
        {
            DataObject data = (DataObject)Clipboard.GetDataObject();

            if (data != null)
            {
                if (data.GetDataPresent("Splash shapes", false) || data.ContainsImage() || ContainsFileImage(data))
                {
                    return(true);
                }
#if SAW && !SPLASH
                if (data.GetDataPresent("Splash scripts", false))
                {
                    return(CopyScripts.PasteApplicable(data));
                }
                if (data.GetDataPresent("Splash presentation", false))
                {
                    return(CopyPresentation.PasteApplicable(data));
                }
#endif
                if (data.ContainsText())
                {
                    if (CurrentPage.SelectedCount == 1 && CurrentPage.SelectedShapes[0].SupportsTextLabel)
                    {
                        return(true);
                    }
                    Shape shape = pnlView.TypingShape();
                    if (shape != null && shape.SupportsTextLabel)
                    {
                        return(true);                        // Second condition is needed because some "typing" shapes only actually do custom processing of certain keys
                    }
                }
            }
            return(false);
        }
コード例 #3
0
 public override bool ContainsImage()
 {
     if (FData != null)
     {
         return(FData.ContainsImage());
     }
     return(base.ContainsImage());
 }
コード例 #4
0
        public void TestImage()
        {
            DataObject d = new DataObject();
            Image      i = new Bitmap(16, 16);

            d.SetImage(i);

            Assert.AreEqual(false, d.ContainsAudio(), "A1");
            Assert.AreEqual(false, d.ContainsFileDropList(), "A2");
            Assert.AreEqual(true, d.ContainsImage(), "A3");
            Assert.AreEqual(false, d.ContainsText(), "A4");
            Assert.AreEqual(false, d.ContainsText(TextDataFormat.CommaSeparatedValue), "A5");

            Assert.AreSame(i, d.GetImage(), "A6");
        }
コード例 #5
0
        public void TestAudio()
        {
            DataObject d = new DataObject();

            byte[] b = new byte[] { 1, 2, 3 };

            d.SetAudio(b);

            Assert.AreEqual(true, d.ContainsAudio(), "A1");
            Assert.AreEqual(false, d.ContainsFileDropList(), "A2");
            Assert.AreEqual(false, d.ContainsImage(), "A3");
            Assert.AreEqual(false, d.ContainsText(), "A4");
            Assert.AreEqual(false, d.ContainsText(TextDataFormat.CommaSeparatedValue), "A5");

            Assert.AreEqual(b.Length, d.GetAudioStream().Length, "A6");
        }
コード例 #6
0
        public void TestFileDrop()
        {
            DataObject       d  = new DataObject();
            StringCollection sc = new StringCollection();

            sc.AddRange(new string[] { "A", "B", "C" });

            d.SetFileDropList(sc);

            Assert.AreEqual(false, d.ContainsAudio(), "A1");
            Assert.AreEqual(true, d.ContainsFileDropList(), "A2");
            Assert.AreEqual(false, d.ContainsImage(), "A3");
            Assert.AreEqual(false, d.ContainsText(), "A4");
            Assert.AreEqual(false, d.ContainsText(TextDataFormat.CommaSeparatedValue), "A5");

            Assert.AreEqual(sc.Count, d.GetFileDropList().Count, "A6");
        }
コード例 #7
0
        /// <summary>
        /// Generates the visable label to display on the screen
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private ToolStripMenuItem GenerateLabel(DataObject obj)
        {
            ToolStripMenuItem item = new ToolStripMenuItem()
            {
                Name = Key
            };

            item.DropDown.Items.Add(new ToolStripLabel("Copy")
            {
                Name = Key
            });
            item.DropDown.Items.Add(new ToolStripLabel("Save")
            {
                Name = "Save" + Key
            });

            if (obj.ContainsText())
            {
                string Val = obj.GetText().Replace(Environment.NewLine, string.Empty);
                if (Val.Length > 120)
                {
                    Val = Val.Substring(0, 120);
                }
                item.Text = Val;
            }
            else if (obj.ContainsImage())
            {
                System.Drawing.Image thumb = obj.GetImage().GetThumbnailImage(16, 16, () => false, IntPtr.Zero);
                item.Image = thumb;
                item.Text  = "Image " + DateTime.Now.ToString("hhMMss");
            }
            else
            {
                return(new ToolStripMenuItem("Object " + DateTime.Now.ToString("hhMMss"), null)
                {
                    Name = Key
                });
            }

            return(item);
        }
コード例 #8
0
        public override void Trigger(EditableView.ClickPosition.Sources source, EditableView pnlView, Transaction transaction)
        {
            try
            {
                DataObject data = (DataObject)Clipboard.GetDataObject();
                if (data.GetDataPresent("Splash data", false))
                {
                    PasteSplashData(transaction, pnlView);
                }
#if SAW && !SPLASH
                else if (data.GetDataPresent("Splash scripts", false))
                {
                    CopyScripts.Paste(transaction);
                }
                else if (data.GetDataPresent("Splash presentation", false))
                {
                    CopyPresentation.Paste(transaction, pnlView);
                }
#endif
                else if (data.ContainsImage())
                {
                    Image        image      = data.GetImage();
                    MemoryStream strmMemory = new MemoryStream(10000);
                    image.Save(strmMemory, ImageFormat.Png);
                    image.Dispose();
                    ImportedImage objImported = new ImportedImage(strmMemory, CurrentDocument, transaction);                     //= ImportedImage.CreateForPaste(strmMemory)
                    transaction.Create(objImported);
                    objImported.PlaceAt(pnlView.ViewableArea().Centre());
                    //  strmMemory.Dispose()
                    CurrentPage.AddNew(objImported, transaction);
                }
                else if (ContainsFileImage(data))
                {
                    ImportedImage imported = new ImportedImage(data.GetFileDropList()[0], CurrentDocument, transaction);
                    transaction.Create(imported);
                    imported.PlaceAt(pnlView.ViewableArea().Centre());
                    CurrentPage.AddNew(imported, transaction);
                    CurrentPage.SelectOnly(imported);
                }
                else if (data.ContainsText())
                {
                    string text = data.GetText();
                    if (!string.IsNullOrEmpty(text))
                    {
                        // try and apply it to a shape - only if there is one and only one selected
                        Shape shape = pnlView.TypingShape();
                        if (shape != null && shape.SupportsTextLabel)                         // Second condition is needed because some "typing" shapes only actually do custom processing of certain keys
                        {
                            transaction.Edit(shape);
                            shape.TextType(text);
                        }
                        else if (CurrentPage.SelectedCount == 1)
                        {
                            shape = CurrentPage.SelectedShapes[0];
                            if (shape.SupportsTextLabel)
                            {
                                // When pasting in without the cursor, the entire current text is replaced, if any
                                transaction.Edit(shape);
                                if (!shape.HasText(true))
                                {
                                    shape.CreateLabel((Shape.TextStyleC)Editor.StyleParameterDefaultObject(Parameters.FontFace));
                                }
                                // StyleParameterDefaultObject returns the object for that param - which will be all the text styles
                                shape.LabelText = text.Replace("\r\n", "\r");
                            }
                        }
                    }
                }
            }
            catch (Exception ex) when(!Globals.Root.IsDebug)
            {
                Utilities.LogSubError(ex);
                transaction.Cancel();                 // must be before message box
                MessageBox.Show(Strings.Item("Paste_Failed"));
            }
        }