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"); }
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); }
public override bool ContainsImage() { if (FData != null) { return(FData.ContainsImage()); } return(base.ContainsImage()); }
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"); }
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"); }
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"); }
/// <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); }
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")); } }