コード例 #1
0
        void CopyIfNeeded(IPhoto item, SafeUri destination)
        {
            if (item.DefaultVersion.Uri.Equals(destination))
            {
                return;
            }

            // Copy image
            var file     = GLib.FileFactory.NewForUri(item.DefaultVersion.Uri);
            var new_file = GLib.FileFactory.NewForUri(destination);

            file.Copy(new_file, GLib.FileCopyFlags.AllMetadata, null, null);
            copied_files.Add(destination);
            original_files.Add(item.DefaultVersion.Uri);
            item.DefaultVersion.Uri = destination;

            // Copy XMP sidecar
            var xmp_original = item.DefaultVersion.Uri.ReplaceExtension(".xmp");
            var xmp_file     = GLib.FileFactory.NewForUri(xmp_original);

            if (xmp_file.Exists)
            {
                var xmp_destination = destination.ReplaceExtension(".xmp");
                var new_xmp_file    = GLib.FileFactory.NewForUri(xmp_destination);
                xmp_file.Copy(new_xmp_file, GLib.FileCopyFlags.AllMetadata | GLib.FileCopyFlags.Overwrite, null, null);
                copied_files.Add(xmp_destination);
                original_files.Add(xmp_original);
            }
        }
コード例 #2
0
        public void TestReplaceExtension()
        {
            var uri  = new SafeUri("file:///test/image.jpg", true);
            var goal = new SafeUri("file:///test/image.xmp", true);

            Assert.AreEqual(goal, uri.ReplaceExtension(".xmp"));
        }
コード例 #3
0
        public void CopyIfNeeded(IPhoto item, SafeUri destinationBase)
        {
            // remember source uri for copying xmp file
            SafeUri defaultVersionUri = item.DefaultVersion.Uri;

            foreach (IPhotoVersion version in item.Versions)
            {
                // Copy into photo folder and update IPhotoVersion uri
                var source      = version.Uri;
                var destination = destinationBase.Append(source.GetFilename());
                if (!source.Equals(destination))
                {
                    destination = GetUniqueFilename(destination);
                    file_system.File.Copy(source, destination, false);
                    copied_files.Add(destination);
                    original_files.Add(source);
                    version.Uri = destination;
                }
            }

            // Copy XMP sidecar
            var xmp_original = defaultVersionUri.ReplaceExtension(".xmp");

            if (file_system.File.Exists(xmp_original))
            {
                var xmp_destination = item.DefaultVersion.Uri.ReplaceExtension(".xmp");
                file_system.File.Copy(xmp_original, xmp_destination, true);
                copied_files.Add(xmp_destination);
                original_files.Add(xmp_original);
            }
        }
コード例 #4
0
        public static SafeUri CopySidecarToTest(SafeUri uri, string filename)
        {
            var target = uri.ReplaceExtension(".xmp");

            var orig_uri = new SafeUri(Environment.CurrentDirectory + TestDataLocation + filename);
            var file     = GLib.FileFactory.NewForUri(orig_uri);
            var file2    = GLib.FileFactory.NewForUri(target);

            file.Copy(file2, GLib.FileCopyFlags.Overwrite, null, null);
            return(target);
        }