Esempio n. 1
0
        public void Run(object o, EventArgs e)
        {
            Log.Debug("EXECUTING RAW PLUS JPEG EXTENSION");

            if (ResponseType.Ok != HigMessageDialog.RunHigConfirmation(
                    App.Instance.Organizer.Window,
                    DialogFlags.DestroyWithParent,
                    MessageType.Warning,
                    "Merge Raw+Jpegs",
                    "This operation will merge Raw and Jpegs versions of the same image as one unique image. The Raw image will be the Original version, the jpeg will be named 'Jpeg' and all subsequent versions will keep their original names (if possible).\n\nNote: only enabled for some formats right now.",
                    "Do it now"))
            {
                return;
            }

            Photo [] photos = ObsoletePhotoQueries.Query((Tag [])null, null, null, null);
            Array.Sort(photos, new IPhotoComparer.CompareDirectory());

            Photo raw  = null;
            Photo jpeg = null;

            IList <MergeRequest> merge_requests = new List <MergeRequest> ();
            var factory = App.Instance.Container.Resolve <IImageFileFactory> ();

            for (int i = 0; i < photos.Length; i++)
            {
                Photo p = photos [i];

                if (!factory.IsRaw(p.DefaultVersion.Uri) && !factory.IsJpeg(p.DefaultVersion.Uri))
                {
                    continue;
                }

                if (factory.IsJpeg(p.DefaultVersion.Uri))
                {
                    jpeg = p;
                }
                if (factory.IsRaw(p.DefaultVersion.Uri))
                {
                    raw = p;
                }

                if (raw != null && jpeg != null && SamePlaceAndName(raw, jpeg))
                {
                    merge_requests.Add(new MergeRequest(raw, jpeg));
                }
            }

            if (merge_requests.Count == 0)
            {
                return;
            }

            foreach (MergeRequest mr in merge_requests)
            {
                mr.Merge();
            }

            App.Instance.Organizer.UpdateQuery();
        }
Esempio n. 2
0
        private Photo[] GetChosenPhotos()
        {
            switch (query_type)
            {
            case QueryType.ByTag:
                return(ObsoletePhotoQueries.Query(new Tag[] { query_tag }));

            case QueryType.CurrentView:
                return(App.Instance.Organizer.Query.Photos);

            case QueryType.Selected:
            default:
                return(App.Instance.Organizer.SelectedPhotos());
            }
        }