示例#1
0
 public void Merge()
 {
     Log.DebugFormat("Merging {0} and {1}", raw.VersionUri(Photo.OriginalVersionId), jpeg.VersionUri(Photo.OriginalVersionId));
     foreach (uint version_id in jpeg.VersionIds)
     {
         string name = jpeg.GetVersion(version_id).Name;
         try {
             raw.DefaultVersionId = raw.CreateReparentedVersion(jpeg.GetVersion(version_id) as PhotoVersion, version_id == Photo.OriginalVersionId);
             if (version_id == Photo.OriginalVersionId)
             {
                 raw.RenameVersion(raw.DefaultVersionId, "Jpeg");
             }
             else
             {
                 raw.RenameVersion(raw.DefaultVersionId, name);
             }
         } catch (Exception e) {
             Log.Exception(e);
         }
     }
     raw.AddTag(jpeg.Tags);
     uint [] version_ids = jpeg.VersionIds;
     Array.Reverse(version_ids);
     foreach (uint version_id in version_ids)
     {
         try {
             jpeg.DeleteVersion(version_id, true, true);
         } catch (Exception e) {
             Log.Exception(e);
         }
     }
     raw.Changes.DataChanged = true;
     App.Instance.Database.Photos.Commit(raw);
     App.Instance.Database.Photos.Remove(jpeg);
 }
示例#2
0
        public bool Execute(PhotoStore store, Photo photo, Gtk.Window parent_window)
        {
            // FIXME HIG-ify.
            Dialog dialog = new Dialog();

            dialog.BorderWidth  = 6;
            dialog.TransientFor = parent_window;
            dialog.HasSeparator = false;
            dialog.Title        = Catalog.GetString("Really Delete?");
            dialog.AddButton(Catalog.GetString("Cancel"), (int)ResponseType.Cancel);
            dialog.AddButton(Catalog.GetString("Delete"), (int)ResponseType.Ok);
            dialog.DefaultResponse = ResponseType.Ok;

            string version_name = photo.GetVersionName(photo.DefaultVersionId);
            Label  label        = new Label(String.Format(Catalog.GetString("Really delete version \"{0}\"?"), version_name));

            label.Show();
            dialog.VBox.PackStart(label, false, true, 6);;

            if (dialog.Run() == (int)ResponseType.Ok)
            {
                try {
                    photo.DeleteVersion(photo.DefaultVersionId);
                    store.Commit(photo);
                } catch (Exception e) {
                    // FIXME show error dialog.
                    string msg  = Catalog.GetString("Could not delete a version");
                    string desc = String.Format(Catalog.GetString("Received exception \"{0}\". Unable to delete version \"{1}\""),
                                                e.Message, photo.Name);

                    HigMessageDialog md = new HigMessageDialog(parent_window, DialogFlags.DestroyWithParent,
                                                               Gtk.MessageType.Error, ButtonsType.Ok,
                                                               msg,
                                                               desc);
                    md.Run();
                    md.Destroy();
                    dialog.Destroy();                      // Delete confirmation window.
                    return(false);
                }

                dialog.Destroy();
                return(true);
            }

            dialog.Destroy();
            return(false);
        }
示例#3
0
        public bool Execute(PhotoStore store, Photo photo, Gtk.Window parent_window)
        {
            string ok_caption = Strings.Delete;
            string msg        = Strings.ReallyDeleteVersionXQuestion(photo.DefaultVersion.Name);
            string desc       = Strings.ThisRemovesTheVersionAndDeletesTheCorrespondingFileFromDisk;

            try {
                if (ResponseType.Ok == HigMessageDialog.RunHigConfirmation(parent_window, DialogFlags.DestroyWithParent, MessageType.Warning, msg, desc, ok_caption))
                {
                    photo.DeleteVersion(photo.DefaultVersionId);
                    store.Commit(photo);
                    return(true);
                }
            } catch (Exception e) {
                HandleException("Could not delete a version", e, parent_window);
            }
            return(false);
        }
示例#4
0
        public bool Execute(PhotoStore store, Photo photo, Gtk.Window parent_window)
        {
            // FIXME HIG-ify.
            Dialog dialog = new Dialog ();
            dialog.BorderWidth = 6;
            dialog.TransientFor = parent_window;
            dialog.HasSeparator = false;
            dialog.Title = Catalog.GetString ("Really Delete?");
            dialog.AddButton (Catalog.GetString ("Cancel"), (int) ResponseType.Cancel);
            dialog.AddButton (Catalog.GetString ("Delete"), (int) ResponseType.Ok);
            dialog.DefaultResponse = ResponseType.Ok;

            string version_name = photo.GetVersion (photo.DefaultVersionId).Name;
            Label label = new Label (String.Format (Catalog.GetString ("Really delete version \"{0}\"?"), version_name));
            label.Show ();
            dialog.VBox.PackStart (label, false, true, 6);;

            if (dialog.Run () == (int) ResponseType.Ok) {
                try {
                    photo.DeleteVersion (photo.DefaultVersionId);
                    store.Commit (photo);
                } catch (Exception e) {
                    Log.DebugException (e);
                    string msg = Catalog.GetString ("Could not delete a version");
                    string desc = String.Format (Catalog.GetString ("Received exception \"{0}\". Unable to delete version \"{1}\""),
                                     e.Message, photo.Name);

                    HigMessageDialog md = new HigMessageDialog (parent_window, DialogFlags.DestroyWithParent,
                                            Gtk.MessageType.Error, ButtonsType.Ok,
                                            msg,
                                            desc);
                    md.Run ();
                    md.Destroy ();
                    dialog.Destroy (); // Delete confirmation window.
                    return false;
                }

                dialog.Destroy ();
                return true;
            }

            dialog.Destroy ();
            return false;
        }
        public bool Execute(PhotoStore store, Photo photo, Gtk.Window parent_window)
        {
            string ok_caption = Catalog.GetString("Delete");
            string msg        = String.Format(Catalog.GetString("Really delete version \"{0}\"?"), photo.DefaultVersion.Name);
            string desc       = Catalog.GetString("This removes the version and deletes the corresponding file from disk.");

            try {
                if (ResponseType.Ok == HigMessageDialog.RunHigConfirmation(parent_window, DialogFlags.DestroyWithParent,
                                                                           MessageType.Warning, msg, desc, ok_caption))
                {
                    photo.DeleteVersion(photo.DefaultVersionId);
                    store.Commit(photo);
                    return(true);
                }
            } catch (Exception e) {
                HandleException("Could not delete a version", e, parent_window);
            }
            return(false);
        }
        public bool Execute(PhotoStore store, Photo photo, Gtk.Window parent_window)
        {
            string ok_caption = Catalog.GetString("De_tach");
            string msg        = String.Format(Catalog.GetString("Really detach version \"{0}\" from \"{1}\"?"), photo.DefaultVersion.Name, photo.Name.Replace("_", "__"));
            string desc       = Catalog.GetString("This makes the version appear as a separate photo in the library. To undo, drag the new photo back to its parent.");

            try {
                if (ResponseType.Ok == HigMessageDialog.RunHigConfirmation(parent_window, DialogFlags.DestroyWithParent,
                                                                           MessageType.Warning, msg, desc, ok_caption))
                {
                    Photo new_photo = store.CreateFrom(photo, photo.RollId);
                    new_photo.CopyAttributesFrom(photo);
                    photo.DeleteVersion(photo.DefaultVersionId, false, true);
                    store.Commit(new Photo[] { new_photo, photo });
                    return(true);
                }
            } catch (Exception e) {
                HandleException("Could not detach a version", e, parent_window);
            }
            return(false);
        }
示例#7
0
        public bool Execute(PhotoStore store, Photo photo, Gtk.Window parent_window)
        {
            string ok_caption = Strings.DetachButton;
            string msg        = Strings.ReallyDetachVersionXFromYQuestion(photo.DefaultVersion.Name, photo.Name.Replace("_", "__"));
            string desc       = Strings.ThisMakesTheVersionAppearAsASeperatePhotoInTheLibraryToUndoDragTheNewPhotoBackToItsParent;

            try {
                if (ResponseType.Ok == HigMessageDialog.RunHigConfirmation(parent_window, DialogFlags.DestroyWithParent,
                                                                           MessageType.Warning, msg, desc, ok_caption))
                {
                    var new_photo = store.CreateFrom(photo, true, photo.RollId);
                    new_photo.CopyAttributesFrom(photo);
                    photo.DeleteVersion(photo.DefaultVersionId, false, true);
                    store.Commit(new Photo[] { new_photo, photo });
                    return(true);
                }
            } catch (Exception e) {
                HandleException("Could not detach a version", e, parent_window);
            }
            return(false);
        }
 public bool Execute(PhotoStore store, Photo photo, Gtk.Window parent_window)
 {
     string ok_caption = Catalog.GetString ("De_tach");
     string msg = String.Format (Catalog.GetString ("Really detach version \"{0}\" from \"{1}\"?"), photo.DefaultVersion.Name, photo.Name.Replace("_", "__"));
     string desc = Catalog.GetString ("This makes the version appear as a separate photo in the library. To undo, drag the new photo back to its parent.");
     try {
         if (ResponseType.Ok == HigMessageDialog.RunHigConfirmation(parent_window, DialogFlags.DestroyWithParent,
                                MessageType.Warning, msg, desc, ok_caption)) {
             Photo new_photo = store.CreateFrom (photo, photo.RollId);
             new_photo.CopyAttributesFrom (photo);
             photo.DeleteVersion (photo.DefaultVersionId, false, true);
             store.Commit (new Photo[] {new_photo, photo});
             return true;
         }
     } catch (Exception e) {
         HandleException ("Could not detach a version", e, parent_window);
     }
     return false;
 }
 public bool Execute(PhotoStore store, Photo photo, Gtk.Window parent_window)
 {
     string ok_caption = Catalog.GetString ("Delete");
     string msg = String.Format (Catalog.GetString ("Really delete version \"{0}\"?"), photo.DefaultVersion.Name);
     string desc = Catalog.GetString ("This removes the version and deletes the corresponding file from disk.");
     try {
         if (ResponseType.Ok == HigMessageDialog.RunHigConfirmation(parent_window, DialogFlags.DestroyWithParent,
                                MessageType.Warning, msg, desc, ok_caption)) {
             photo.DeleteVersion (photo.DefaultVersionId);
             store.Commit (photo);
             return true;
         }
     } catch (Exception e) {
         HandleException ("Could not delete a version", e, parent_window);
     }
     return false;
 }