private void MenuCopyLayoutToClipboardClick(object sender, RoutedEventArgs e) { try { using (var ms = new MemoryStream()) { annoCanvas.Normalize(1); _layoutLoader.SaveLayout(annoCanvas.PlacedObjects, ms); var jsonString = Encoding.UTF8.GetString(ms.ToArray()); Clipboard.SetText(jsonString, TextDataFormat.UnicodeText); string language = Localization.Localization.GetLanguageCodeFromName(SelectedLanguage); MessageBox.Show(Localization.Localization.Translations[language]["ClipboardContainsLayoutAsJson"], Localization.Localization.Translations[language]["Successful"], MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK); } } catch (Exception ex) { App.WriteToErrorLog("Error saving layout to JSON", ex.Message, ex.StackTrace); MessageBox.Show(ex.Message, "Something went wrong while saving the layout."); } }
public void Copy(IEnumerable <AnnoObject> objects) { if (objects is not null && objects.Any()) { using var memoryStream = new MemoryStream(); _layoutLoader.SaveLayout(new LayoutFile(objects), memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); _clipboard.Clear(); _clipboard.SetData(CoreConstants.AnnoDesignerClipboardFormat, memoryStream); _clipboard.Flush(); } }
public void Paste_Data_ClipboardHasKnownDataType_ShouldReturnLayoutObjects() { // Arrange var data = GetListOfObjects(); using var memoryStream = new System.IO.MemoryStream(); _mockedLayoutLoader.SaveLayout(new LayoutFile(data), memoryStream); memoryStream.Seek(0, System.IO.SeekOrigin.Begin); _mockedClipboard.SetData(CoreConstants.AnnoDesignerClipboardFormat, memoryStream); var service = GetService(); // Act var result = service.Paste(); // Assert Assert.Equal(data.Count, result.Count); Assert.All(data, x => { //Assert.Contains(x, result); //not useable because of missing cutom comparer for AnnoObject Assert.Contains(result, y => y.Identifier.Equals(x.Identifier, StringComparison.OrdinalIgnoreCase)); }); }