summaryrefslogtreecommitdiff
path: root/src/Commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Commands.c')
-rw-r--r--src/Commands.c22110
1 files changed, 22110 insertions, 0 deletions
diff --git a/src/Commands.c b/src/Commands.c
new file mode 100644
index 0000000..a9d9bc5
--- /dev/null
+++ b/src/Commands.c
@@ -0,0 +1,22110 @@
+/* Commands.c generated by valac 0.32.1, the Vala compiler
+ * generated from Commands.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+/* PageCommand stores the current page when a Command is created. Subclasses can call return_to_page()*/
+/* if it's appropriate to return to that page when executing an undo() or redo().*/
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gtk/gtk.h>
+#include <gee.h>
+#include <float.h>
+#include <math.h>
+#include <gio/gio.h>
+#include <glib/gi18n-lib.h>
+#include <gdk/gdk.h>
+#include <time.h>
+
+
+#define TYPE_COMMAND_DESCRIPTION (command_description_get_type ())
+#define COMMAND_DESCRIPTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_COMMAND_DESCRIPTION, CommandDescription))
+#define IS_COMMAND_DESCRIPTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_COMMAND_DESCRIPTION))
+#define COMMAND_DESCRIPTION_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_COMMAND_DESCRIPTION, CommandDescriptionIface))
+
+typedef struct _CommandDescription CommandDescription;
+typedef struct _CommandDescriptionIface CommandDescriptionIface;
+
+#define TYPE_COMMAND (command_get_type ())
+#define COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_COMMAND, Command))
+#define COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_COMMAND, CommandClass))
+#define IS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_COMMAND))
+#define IS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_COMMAND))
+#define COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_COMMAND, CommandClass))
+
+typedef struct _Command Command;
+typedef struct _CommandClass CommandClass;
+typedef struct _CommandPrivate CommandPrivate;
+
+#define TYPE_PAGE_COMMAND (page_command_get_type ())
+#define PAGE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PAGE_COMMAND, PageCommand))
+#define PAGE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PAGE_COMMAND, PageCommandClass))
+#define IS_PAGE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PAGE_COMMAND))
+#define IS_PAGE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PAGE_COMMAND))
+#define PAGE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PAGE_COMMAND, PageCommandClass))
+
+typedef struct _PageCommand PageCommand;
+typedef struct _PageCommandClass PageCommandClass;
+typedef struct _PageCommandPrivate PageCommandPrivate;
+
+#define TYPE_PAGE (page_get_type ())
+#define PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PAGE, Page))
+#define PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PAGE, PageClass))
+#define IS_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PAGE))
+#define IS_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PAGE))
+#define PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PAGE, PageClass))
+
+typedef struct _Page Page;
+typedef struct _PageClass PageClass;
+
+#define TYPE_DATA_OBJECT (data_object_get_type ())
+#define DATA_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_OBJECT, DataObject))
+#define DATA_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_OBJECT, DataObjectClass))
+#define IS_DATA_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_OBJECT))
+#define IS_DATA_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_OBJECT))
+#define DATA_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_OBJECT, DataObjectClass))
+
+typedef struct _DataObject DataObject;
+typedef struct _DataObjectClass DataObjectClass;
+
+#define TYPE_DATA_SOURCE (data_source_get_type ())
+#define DATA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_SOURCE, DataSource))
+#define DATA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_SOURCE, DataSourceClass))
+#define IS_DATA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_SOURCE))
+#define IS_DATA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_SOURCE))
+#define DATA_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_SOURCE, DataSourceClass))
+
+typedef struct _DataSource DataSource;
+typedef struct _DataSourceClass DataSourceClass;
+
+#define TYPE_THUMBNAIL_SOURCE (thumbnail_source_get_type ())
+#define THUMBNAIL_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THUMBNAIL_SOURCE, ThumbnailSource))
+#define THUMBNAIL_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THUMBNAIL_SOURCE, ThumbnailSourceClass))
+#define IS_THUMBNAIL_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THUMBNAIL_SOURCE))
+#define IS_THUMBNAIL_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THUMBNAIL_SOURCE))
+#define THUMBNAIL_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THUMBNAIL_SOURCE, ThumbnailSourceClass))
+
+typedef struct _ThumbnailSource ThumbnailSource;
+typedef struct _ThumbnailSourceClass ThumbnailSourceClass;
+
+#define TYPE_MEDIA_SOURCE (media_source_get_type ())
+#define MEDIA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_SOURCE, MediaSource))
+#define MEDIA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_SOURCE, MediaSourceClass))
+#define IS_MEDIA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_SOURCE))
+#define IS_MEDIA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_SOURCE))
+#define MEDIA_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_SOURCE, MediaSourceClass))
+
+typedef struct _MediaSource MediaSource;
+typedef struct _MediaSourceClass MediaSourceClass;
+
+#define TYPE_PHOTO_SOURCE (photo_source_get_type ())
+#define PHOTO_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHOTO_SOURCE, PhotoSource))
+#define PHOTO_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHOTO_SOURCE, PhotoSourceClass))
+#define IS_PHOTO_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHOTO_SOURCE))
+#define IS_PHOTO_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHOTO_SOURCE))
+#define PHOTO_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHOTO_SOURCE, PhotoSourceClass))
+
+typedef struct _PhotoSource PhotoSource;
+typedef struct _PhotoSourceClass PhotoSourceClass;
+
+#define TYPE_PHOTO (photo_get_type ())
+#define PHOTO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHOTO, Photo))
+#define PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHOTO, PhotoClass))
+#define IS_PHOTO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHOTO))
+#define IS_PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHOTO))
+#define PHOTO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHOTO, PhotoClass))
+
+typedef struct _Photo Photo;
+typedef struct _PhotoClass PhotoClass;
+
+#define TYPE_CHECKERBOARD_PAGE (checkerboard_page_get_type ())
+#define CHECKERBOARD_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CHECKERBOARD_PAGE, CheckerboardPage))
+#define CHECKERBOARD_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CHECKERBOARD_PAGE, CheckerboardPageClass))
+#define IS_CHECKERBOARD_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CHECKERBOARD_PAGE))
+#define IS_CHECKERBOARD_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CHECKERBOARD_PAGE))
+#define CHECKERBOARD_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CHECKERBOARD_PAGE, CheckerboardPageClass))
+
+typedef struct _CheckerboardPage CheckerboardPage;
+typedef struct _CheckerboardPageClass CheckerboardPageClass;
+
+#define TYPE_MEDIA_PAGE (media_page_get_type ())
+#define MEDIA_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_PAGE, MediaPage))
+#define MEDIA_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_PAGE, MediaPageClass))
+#define IS_MEDIA_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_PAGE))
+#define IS_MEDIA_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_PAGE))
+#define MEDIA_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_PAGE, MediaPageClass))
+
+typedef struct _MediaPage MediaPage;
+typedef struct _MediaPageClass MediaPageClass;
+
+#define TYPE_COLLECTION_PAGE (collection_page_get_type ())
+#define COLLECTION_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_COLLECTION_PAGE, CollectionPage))
+#define COLLECTION_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_COLLECTION_PAGE, CollectionPageClass))
+#define IS_COLLECTION_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_COLLECTION_PAGE))
+#define IS_COLLECTION_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_COLLECTION_PAGE))
+#define COLLECTION_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_COLLECTION_PAGE, CollectionPageClass))
+
+typedef struct _CollectionPage CollectionPage;
+typedef struct _CollectionPageClass CollectionPageClass;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define TYPE_PAGE_WINDOW (page_window_get_type ())
+#define PAGE_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PAGE_WINDOW, PageWindow))
+#define PAGE_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PAGE_WINDOW, PageWindowClass))
+#define IS_PAGE_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PAGE_WINDOW))
+#define IS_PAGE_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PAGE_WINDOW))
+#define PAGE_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PAGE_WINDOW, PageWindowClass))
+
+typedef struct _PageWindow PageWindow;
+typedef struct _PageWindowClass PageWindowClass;
+
+#define TYPE_APP_WINDOW (app_window_get_type ())
+#define APP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_APP_WINDOW, AppWindow))
+#define APP_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_APP_WINDOW, AppWindowClass))
+#define IS_APP_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_APP_WINDOW))
+#define IS_APP_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_APP_WINDOW))
+#define APP_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_APP_WINDOW, AppWindowClass))
+
+typedef struct _AppWindow AppWindow;
+typedef struct _AppWindowClass AppWindowClass;
+
+#define TYPE_SINGLE_PHOTO_PAGE (single_photo_page_get_type ())
+#define SINGLE_PHOTO_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SINGLE_PHOTO_PAGE, SinglePhotoPage))
+#define SINGLE_PHOTO_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SINGLE_PHOTO_PAGE, SinglePhotoPageClass))
+#define IS_SINGLE_PHOTO_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SINGLE_PHOTO_PAGE))
+#define IS_SINGLE_PHOTO_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SINGLE_PHOTO_PAGE))
+#define SINGLE_PHOTO_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SINGLE_PHOTO_PAGE, SinglePhotoPageClass))
+
+typedef struct _SinglePhotoPage SinglePhotoPage;
+typedef struct _SinglePhotoPageClass SinglePhotoPageClass;
+
+#define TYPE_EDITING_HOST_PAGE (editing_host_page_get_type ())
+#define EDITING_HOST_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EDITING_HOST_PAGE, EditingHostPage))
+#define EDITING_HOST_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EDITING_HOST_PAGE, EditingHostPageClass))
+#define IS_EDITING_HOST_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EDITING_HOST_PAGE))
+#define IS_EDITING_HOST_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EDITING_HOST_PAGE))
+#define EDITING_HOST_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EDITING_HOST_PAGE, EditingHostPageClass))
+
+typedef struct _EditingHostPage EditingHostPage;
+typedef struct _EditingHostPageClass EditingHostPageClass;
+
+#define TYPE_LIBRARY_PHOTO_PAGE (library_photo_page_get_type ())
+#define LIBRARY_PHOTO_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LIBRARY_PHOTO_PAGE, LibraryPhotoPage))
+#define LIBRARY_PHOTO_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LIBRARY_PHOTO_PAGE, LibraryPhotoPageClass))
+#define IS_LIBRARY_PHOTO_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LIBRARY_PHOTO_PAGE))
+#define IS_LIBRARY_PHOTO_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LIBRARY_PHOTO_PAGE))
+#define LIBRARY_PHOTO_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LIBRARY_PHOTO_PAGE, LibraryPhotoPageClass))
+
+typedef struct _LibraryPhotoPage LibraryPhotoPage;
+typedef struct _LibraryPhotoPageClass LibraryPhotoPageClass;
+
+#define TYPE_DATA_COLLECTION (data_collection_get_type ())
+#define DATA_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_COLLECTION, DataCollection))
+#define DATA_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_COLLECTION, DataCollectionClass))
+#define IS_DATA_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_COLLECTION))
+#define IS_DATA_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_COLLECTION))
+#define DATA_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_COLLECTION, DataCollectionClass))
+
+typedef struct _DataCollection DataCollection;
+typedef struct _DataCollectionClass DataCollectionClass;
+
+#define TYPE_VIEW_COLLECTION (view_collection_get_type ())
+#define VIEW_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VIEW_COLLECTION, ViewCollection))
+#define VIEW_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VIEW_COLLECTION, ViewCollectionClass))
+#define IS_VIEW_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VIEW_COLLECTION))
+#define IS_VIEW_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VIEW_COLLECTION))
+#define VIEW_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VIEW_COLLECTION, ViewCollectionClass))
+
+typedef struct _ViewCollection ViewCollection;
+typedef struct _ViewCollectionClass ViewCollectionClass;
+#define _data_collection_unref0(var) ((var == NULL) ? NULL : (var = (data_collection_unref (var), NULL)))
+
+#define TYPE_DATA_VIEW (data_view_get_type ())
+#define DATA_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_VIEW, DataView))
+#define DATA_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_VIEW, DataViewClass))
+#define IS_DATA_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_VIEW))
+#define IS_DATA_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_VIEW))
+#define DATA_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_VIEW, DataViewClass))
+
+typedef struct _DataView DataView;
+typedef struct _DataViewClass DataViewClass;
+
+#define TYPE_THUMBNAIL_VIEW (thumbnail_view_get_type ())
+#define THUMBNAIL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THUMBNAIL_VIEW, ThumbnailView))
+#define THUMBNAIL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THUMBNAIL_VIEW, ThumbnailViewClass))
+#define IS_THUMBNAIL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THUMBNAIL_VIEW))
+#define IS_THUMBNAIL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THUMBNAIL_VIEW))
+#define THUMBNAIL_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THUMBNAIL_VIEW, ThumbnailViewClass))
+
+typedef struct _ThumbnailView ThumbnailView;
+typedef struct _ThumbnailViewClass ThumbnailViewClass;
+
+#define TYPE_CHECKERBOARD_ITEM (checkerboard_item_get_type ())
+#define CHECKERBOARD_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CHECKERBOARD_ITEM, CheckerboardItem))
+#define CHECKERBOARD_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CHECKERBOARD_ITEM, CheckerboardItemClass))
+#define IS_CHECKERBOARD_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CHECKERBOARD_ITEM))
+#define IS_CHECKERBOARD_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CHECKERBOARD_ITEM))
+#define CHECKERBOARD_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CHECKERBOARD_ITEM, CheckerboardItemClass))
+
+typedef struct _CheckerboardItem CheckerboardItem;
+typedef struct _CheckerboardItemClass CheckerboardItemClass;
+
+#define TYPE_MEDIA_SOURCE_ITEM (media_source_item_get_type ())
+#define MEDIA_SOURCE_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_SOURCE_ITEM, MediaSourceItem))
+#define MEDIA_SOURCE_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_SOURCE_ITEM, MediaSourceItemClass))
+#define IS_MEDIA_SOURCE_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_SOURCE_ITEM))
+#define IS_MEDIA_SOURCE_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_SOURCE_ITEM))
+#define MEDIA_SOURCE_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_SOURCE_ITEM, MediaSourceItemClass))
+
+typedef struct _MediaSourceItem MediaSourceItem;
+typedef struct _MediaSourceItemClass MediaSourceItemClass;
+
+#define TYPE_THUMBNAIL (thumbnail_get_type ())
+#define THUMBNAIL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THUMBNAIL, Thumbnail))
+#define THUMBNAIL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THUMBNAIL, ThumbnailClass))
+#define IS_THUMBNAIL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THUMBNAIL))
+#define IS_THUMBNAIL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THUMBNAIL))
+#define THUMBNAIL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THUMBNAIL, ThumbnailClass))
+
+typedef struct _Thumbnail Thumbnail;
+typedef struct _ThumbnailClass ThumbnailClass;
+
+#define TYPE_LIBRARY_WINDOW (library_window_get_type ())
+#define LIBRARY_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LIBRARY_WINDOW, LibraryWindow))
+#define LIBRARY_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LIBRARY_WINDOW, LibraryWindowClass))
+#define IS_LIBRARY_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LIBRARY_WINDOW))
+#define IS_LIBRARY_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LIBRARY_WINDOW))
+#define LIBRARY_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LIBRARY_WINDOW, LibraryWindowClass))
+
+typedef struct _LibraryWindow LibraryWindow;
+typedef struct _LibraryWindowClass LibraryWindowClass;
+
+#define TYPE_SINGLE_DATA_SOURCE_COMMAND (single_data_source_command_get_type ())
+#define SINGLE_DATA_SOURCE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand))
+#define SINGLE_DATA_SOURCE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommandClass))
+#define IS_SINGLE_DATA_SOURCE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SINGLE_DATA_SOURCE_COMMAND))
+#define IS_SINGLE_DATA_SOURCE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SINGLE_DATA_SOURCE_COMMAND))
+#define SINGLE_DATA_SOURCE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommandClass))
+
+typedef struct _SingleDataSourceCommand SingleDataSourceCommand;
+typedef struct _SingleDataSourceCommandClass SingleDataSourceCommandClass;
+typedef struct _SingleDataSourceCommandPrivate SingleDataSourceCommandPrivate;
+
+#define TYPE_COMMAND_MANAGER (command_manager_get_type ())
+#define COMMAND_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_COMMAND_MANAGER, CommandManager))
+#define COMMAND_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_COMMAND_MANAGER, CommandManagerClass))
+#define IS_COMMAND_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_COMMAND_MANAGER))
+#define IS_COMMAND_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_COMMAND_MANAGER))
+#define COMMAND_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_COMMAND_MANAGER, CommandManagerClass))
+
+typedef struct _CommandManager CommandManager;
+typedef struct _CommandManagerClass CommandManagerClass;
+#define _command_manager_unref0(var) ((var == NULL) ? NULL : (var = (command_manager_unref (var), NULL)))
+
+#define TYPE_SIMPLE_PROXYABLE_COMMAND (simple_proxyable_command_get_type ())
+#define SIMPLE_PROXYABLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SIMPLE_PROXYABLE_COMMAND, SimpleProxyableCommand))
+#define SIMPLE_PROXYABLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SIMPLE_PROXYABLE_COMMAND, SimpleProxyableCommandClass))
+#define IS_SIMPLE_PROXYABLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SIMPLE_PROXYABLE_COMMAND))
+#define IS_SIMPLE_PROXYABLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SIMPLE_PROXYABLE_COMMAND))
+#define SIMPLE_PROXYABLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SIMPLE_PROXYABLE_COMMAND, SimpleProxyableCommandClass))
+
+typedef struct _SimpleProxyableCommand SimpleProxyableCommand;
+typedef struct _SimpleProxyableCommandClass SimpleProxyableCommandClass;
+typedef struct _SimpleProxyableCommandPrivate SimpleProxyableCommandPrivate;
+
+#define TYPE_SOURCE_PROXY (source_proxy_get_type ())
+#define SOURCE_PROXY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOURCE_PROXY, SourceProxy))
+#define SOURCE_PROXY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOURCE_PROXY, SourceProxyClass))
+#define IS_SOURCE_PROXY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOURCE_PROXY))
+#define IS_SOURCE_PROXY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOURCE_PROXY))
+#define SOURCE_PROXY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOURCE_PROXY, SourceProxyClass))
+
+typedef struct _SourceProxy SourceProxy;
+typedef struct _SourceProxyClass SourceProxyClass;
+#define _source_proxy_unref0(var) ((var == NULL) ? NULL : (var = (source_proxy_unref (var), NULL)))
+
+#define TYPE_PROXYABLE (proxyable_get_type ())
+#define PROXYABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROXYABLE, Proxyable))
+#define IS_PROXYABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROXYABLE))
+#define PROXYABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_PROXYABLE, ProxyableIface))
+
+typedef struct _Proxyable Proxyable;
+typedef struct _ProxyableIface ProxyableIface;
+
+#define TYPE_SINGLE_PHOTO_TRANSFORMATION_COMMAND (single_photo_transformation_command_get_type ())
+#define SINGLE_PHOTO_TRANSFORMATION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SINGLE_PHOTO_TRANSFORMATION_COMMAND, SinglePhotoTransformationCommand))
+#define SINGLE_PHOTO_TRANSFORMATION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SINGLE_PHOTO_TRANSFORMATION_COMMAND, SinglePhotoTransformationCommandClass))
+#define IS_SINGLE_PHOTO_TRANSFORMATION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SINGLE_PHOTO_TRANSFORMATION_COMMAND))
+#define IS_SINGLE_PHOTO_TRANSFORMATION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SINGLE_PHOTO_TRANSFORMATION_COMMAND))
+#define SINGLE_PHOTO_TRANSFORMATION_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SINGLE_PHOTO_TRANSFORMATION_COMMAND, SinglePhotoTransformationCommandClass))
+
+typedef struct _SinglePhotoTransformationCommand SinglePhotoTransformationCommand;
+typedef struct _SinglePhotoTransformationCommandClass SinglePhotoTransformationCommandClass;
+typedef struct _SinglePhotoTransformationCommandPrivate SinglePhotoTransformationCommandPrivate;
+
+#define TYPE_PHOTO_TRANSFORMATION_STATE (photo_transformation_state_get_type ())
+#define PHOTO_TRANSFORMATION_STATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHOTO_TRANSFORMATION_STATE, PhotoTransformationState))
+#define PHOTO_TRANSFORMATION_STATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHOTO_TRANSFORMATION_STATE, PhotoTransformationStateClass))
+#define IS_PHOTO_TRANSFORMATION_STATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHOTO_TRANSFORMATION_STATE))
+#define IS_PHOTO_TRANSFORMATION_STATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHOTO_TRANSFORMATION_STATE))
+#define PHOTO_TRANSFORMATION_STATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHOTO_TRANSFORMATION_STATE, PhotoTransformationStateClass))
+
+typedef struct _PhotoTransformationState PhotoTransformationState;
+typedef struct _PhotoTransformationStateClass PhotoTransformationStateClass;
+
+#define TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND (generic_photo_transformation_command_get_type ())
+#define GENERIC_PHOTO_TRANSFORMATION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, GenericPhotoTransformationCommand))
+#define GENERIC_PHOTO_TRANSFORMATION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, GenericPhotoTransformationCommandClass))
+#define IS_GENERIC_PHOTO_TRANSFORMATION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND))
+#define IS_GENERIC_PHOTO_TRANSFORMATION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND))
+#define GENERIC_PHOTO_TRANSFORMATION_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, GenericPhotoTransformationCommandClass))
+
+typedef struct _GenericPhotoTransformationCommand GenericPhotoTransformationCommand;
+typedef struct _GenericPhotoTransformationCommandClass GenericPhotoTransformationCommandClass;
+typedef struct _GenericPhotoTransformationCommandPrivate GenericPhotoTransformationCommandPrivate;
+
+#define TYPE_MULTIPLE_DATA_SOURCE_COMMAND (multiple_data_source_command_get_type ())
+#define MULTIPLE_DATA_SOURCE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand))
+#define MULTIPLE_DATA_SOURCE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommandClass))
+#define IS_MULTIPLE_DATA_SOURCE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTIPLE_DATA_SOURCE_COMMAND))
+#define IS_MULTIPLE_DATA_SOURCE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MULTIPLE_DATA_SOURCE_COMMAND))
+#define MULTIPLE_DATA_SOURCE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommandClass))
+
+typedef struct _MultipleDataSourceCommand MultipleDataSourceCommand;
+typedef struct _MultipleDataSourceCommandClass MultipleDataSourceCommandClass;
+typedef struct _MultipleDataSourceCommandPrivate MultipleDataSourceCommandPrivate;
+
+#define TYPE_SOURCE_COLLECTION (source_collection_get_type ())
+#define SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOURCE_COLLECTION, SourceCollection))
+#define SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOURCE_COLLECTION, SourceCollectionClass))
+#define IS_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOURCE_COLLECTION))
+#define IS_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOURCE_COLLECTION))
+#define SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOURCE_COLLECTION, SourceCollectionClass))
+
+typedef struct _SourceCollection SourceCollection;
+typedef struct _SourceCollectionClass SourceCollectionClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+#define TYPE_DATABASE_SOURCE_COLLECTION (database_source_collection_get_type ())
+#define DATABASE_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollection))
+#define DATABASE_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollectionClass))
+#define IS_DATABASE_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATABASE_SOURCE_COLLECTION))
+#define IS_DATABASE_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATABASE_SOURCE_COLLECTION))
+#define DATABASE_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollectionClass))
+
+typedef struct _DatabaseSourceCollection DatabaseSourceCollection;
+typedef struct _DatabaseSourceCollectionClass DatabaseSourceCollectionClass;
+
+#define TYPE_MEDIA_SOURCE_COLLECTION (media_source_collection_get_type ())
+#define MEDIA_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection))
+#define MEDIA_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollectionClass))
+#define IS_MEDIA_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_SOURCE_COLLECTION))
+#define IS_MEDIA_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_SOURCE_COLLECTION))
+#define MEDIA_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollectionClass))
+
+typedef struct _MediaSourceCollection MediaSourceCollection;
+typedef struct _MediaSourceCollectionClass MediaSourceCollectionClass;
+
+#define TYPE_TRANSACTION_CONTROLLER (transaction_controller_get_type ())
+#define TRANSACTION_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSACTION_CONTROLLER, TransactionController))
+#define TRANSACTION_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRANSACTION_CONTROLLER, TransactionControllerClass))
+#define IS_TRANSACTION_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSACTION_CONTROLLER))
+#define IS_TRANSACTION_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRANSACTION_CONTROLLER))
+#define TRANSACTION_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRANSACTION_CONTROLLER, TransactionControllerClass))
+
+typedef struct _TransactionController TransactionController;
+typedef struct _TransactionControllerClass TransactionControllerClass;
+
+#define TYPE_PROGRESS_DIALOG (progress_dialog_get_type ())
+#define PROGRESS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PROGRESS_DIALOG, ProgressDialog))
+#define PROGRESS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PROGRESS_DIALOG, ProgressDialogClass))
+#define IS_PROGRESS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PROGRESS_DIALOG))
+#define IS_PROGRESS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PROGRESS_DIALOG))
+#define PROGRESS_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PROGRESS_DIALOG, ProgressDialogClass))
+
+typedef struct _ProgressDialog ProgressDialog;
+typedef struct _ProgressDialogClass ProgressDialogClass;
+
+#define TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND (multiple_data_source_at_once_command_get_type ())
+#define MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND, MultipleDataSourceAtOnceCommand))
+#define MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND, MultipleDataSourceAtOnceCommandClass))
+#define IS_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND))
+#define IS_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND))
+#define MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND, MultipleDataSourceAtOnceCommandClass))
+
+typedef struct _MultipleDataSourceAtOnceCommand MultipleDataSourceAtOnceCommand;
+typedef struct _MultipleDataSourceAtOnceCommandClass MultipleDataSourceAtOnceCommandClass;
+typedef struct _MultipleDataSourceAtOnceCommandPrivate MultipleDataSourceAtOnceCommandPrivate;
+
+#define TYPE_MEDIA_COLLECTION_REGISTRY (media_collection_registry_get_type ())
+#define MEDIA_COLLECTION_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_COLLECTION_REGISTRY, MediaCollectionRegistry))
+#define MEDIA_COLLECTION_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_COLLECTION_REGISTRY, MediaCollectionRegistryClass))
+#define IS_MEDIA_COLLECTION_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_COLLECTION_REGISTRY))
+#define IS_MEDIA_COLLECTION_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_COLLECTION_REGISTRY))
+#define MEDIA_COLLECTION_REGISTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_COLLECTION_REGISTRY, MediaCollectionRegistryClass))
+
+typedef struct _MediaCollectionRegistry MediaCollectionRegistry;
+typedef struct _MediaCollectionRegistryClass MediaCollectionRegistryClass;
+#define _media_collection_registry_unref0(var) ((var == NULL) ? NULL : (var = (media_collection_registry_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+
+#define TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND (multiple_photo_transformation_command_get_type ())
+#define MULTIPLE_PHOTO_TRANSFORMATION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND, MultiplePhotoTransformationCommand))
+#define MULTIPLE_PHOTO_TRANSFORMATION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND, MultiplePhotoTransformationCommandClass))
+#define IS_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND))
+#define IS_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND))
+#define MULTIPLE_PHOTO_TRANSFORMATION_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND, MultiplePhotoTransformationCommandClass))
+
+typedef struct _MultiplePhotoTransformationCommand MultiplePhotoTransformationCommand;
+typedef struct _MultiplePhotoTransformationCommandClass MultiplePhotoTransformationCommandClass;
+typedef struct _MultiplePhotoTransformationCommandPrivate MultiplePhotoTransformationCommandPrivate;
+
+#define TYPE_ROTATE_SINGLE_COMMAND (rotate_single_command_get_type ())
+#define ROTATE_SINGLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ROTATE_SINGLE_COMMAND, RotateSingleCommand))
+#define ROTATE_SINGLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ROTATE_SINGLE_COMMAND, RotateSingleCommandClass))
+#define IS_ROTATE_SINGLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ROTATE_SINGLE_COMMAND))
+#define IS_ROTATE_SINGLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ROTATE_SINGLE_COMMAND))
+#define ROTATE_SINGLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ROTATE_SINGLE_COMMAND, RotateSingleCommandClass))
+
+typedef struct _RotateSingleCommand RotateSingleCommand;
+typedef struct _RotateSingleCommandClass RotateSingleCommandClass;
+typedef struct _RotateSingleCommandPrivate RotateSingleCommandPrivate;
+
+#define TYPE_ROTATION (rotation_get_type ())
+
+#define TYPE_ROTATE_MULTIPLE_COMMAND (rotate_multiple_command_get_type ())
+#define ROTATE_MULTIPLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ROTATE_MULTIPLE_COMMAND, RotateMultipleCommand))
+#define ROTATE_MULTIPLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ROTATE_MULTIPLE_COMMAND, RotateMultipleCommandClass))
+#define IS_ROTATE_MULTIPLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ROTATE_MULTIPLE_COMMAND))
+#define IS_ROTATE_MULTIPLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ROTATE_MULTIPLE_COMMAND))
+#define ROTATE_MULTIPLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ROTATE_MULTIPLE_COMMAND, RotateMultipleCommandClass))
+
+typedef struct _RotateMultipleCommand RotateMultipleCommand;
+typedef struct _RotateMultipleCommandClass RotateMultipleCommandClass;
+typedef struct _RotateMultipleCommandPrivate RotateMultipleCommandPrivate;
+
+#define TYPE_EDIT_TITLE_COMMAND (edit_title_command_get_type ())
+#define EDIT_TITLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EDIT_TITLE_COMMAND, EditTitleCommand))
+#define EDIT_TITLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EDIT_TITLE_COMMAND, EditTitleCommandClass))
+#define IS_EDIT_TITLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EDIT_TITLE_COMMAND))
+#define IS_EDIT_TITLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EDIT_TITLE_COMMAND))
+#define EDIT_TITLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EDIT_TITLE_COMMAND, EditTitleCommandClass))
+
+typedef struct _EditTitleCommand EditTitleCommand;
+typedef struct _EditTitleCommandClass EditTitleCommandClass;
+typedef struct _EditTitleCommandPrivate EditTitleCommandPrivate;
+
+#define TYPE_EDIT_COMMENT_COMMAND (edit_comment_command_get_type ())
+#define EDIT_COMMENT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EDIT_COMMENT_COMMAND, EditCommentCommand))
+#define EDIT_COMMENT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EDIT_COMMENT_COMMAND, EditCommentCommandClass))
+#define IS_EDIT_COMMENT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EDIT_COMMENT_COMMAND))
+#define IS_EDIT_COMMENT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EDIT_COMMENT_COMMAND))
+#define EDIT_COMMENT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EDIT_COMMENT_COMMAND, EditCommentCommandClass))
+
+typedef struct _EditCommentCommand EditCommentCommand;
+typedef struct _EditCommentCommandClass EditCommentCommandClass;
+typedef struct _EditCommentCommandPrivate EditCommentCommandPrivate;
+
+#define TYPE_EDIT_MULTIPLE_TITLES_COMMAND (edit_multiple_titles_command_get_type ())
+#define EDIT_MULTIPLE_TITLES_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EDIT_MULTIPLE_TITLES_COMMAND, EditMultipleTitlesCommand))
+#define EDIT_MULTIPLE_TITLES_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EDIT_MULTIPLE_TITLES_COMMAND, EditMultipleTitlesCommandClass))
+#define IS_EDIT_MULTIPLE_TITLES_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EDIT_MULTIPLE_TITLES_COMMAND))
+#define IS_EDIT_MULTIPLE_TITLES_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EDIT_MULTIPLE_TITLES_COMMAND))
+#define EDIT_MULTIPLE_TITLES_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EDIT_MULTIPLE_TITLES_COMMAND, EditMultipleTitlesCommandClass))
+
+typedef struct _EditMultipleTitlesCommand EditMultipleTitlesCommand;
+typedef struct _EditMultipleTitlesCommandClass EditMultipleTitlesCommandClass;
+typedef struct _EditMultipleTitlesCommandPrivate EditMultipleTitlesCommandPrivate;
+
+#define TYPE_EDIT_MULTIPLE_COMMENTS_COMMAND (edit_multiple_comments_command_get_type ())
+#define EDIT_MULTIPLE_COMMENTS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EDIT_MULTIPLE_COMMENTS_COMMAND, EditMultipleCommentsCommand))
+#define EDIT_MULTIPLE_COMMENTS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EDIT_MULTIPLE_COMMENTS_COMMAND, EditMultipleCommentsCommandClass))
+#define IS_EDIT_MULTIPLE_COMMENTS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EDIT_MULTIPLE_COMMENTS_COMMAND))
+#define IS_EDIT_MULTIPLE_COMMENTS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EDIT_MULTIPLE_COMMENTS_COMMAND))
+#define EDIT_MULTIPLE_COMMENTS_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EDIT_MULTIPLE_COMMENTS_COMMAND, EditMultipleCommentsCommandClass))
+
+typedef struct _EditMultipleCommentsCommand EditMultipleCommentsCommand;
+typedef struct _EditMultipleCommentsCommandClass EditMultipleCommentsCommandClass;
+typedef struct _EditMultipleCommentsCommandPrivate EditMultipleCommentsCommandPrivate;
+
+#define TYPE_RENAME_EVENT_COMMAND (rename_event_command_get_type ())
+#define RENAME_EVENT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_RENAME_EVENT_COMMAND, RenameEventCommand))
+#define RENAME_EVENT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_RENAME_EVENT_COMMAND, RenameEventCommandClass))
+#define IS_RENAME_EVENT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_RENAME_EVENT_COMMAND))
+#define IS_RENAME_EVENT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_RENAME_EVENT_COMMAND))
+#define RENAME_EVENT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_RENAME_EVENT_COMMAND, RenameEventCommandClass))
+
+typedef struct _RenameEventCommand RenameEventCommand;
+typedef struct _RenameEventCommandClass RenameEventCommandClass;
+typedef struct _RenameEventCommandPrivate RenameEventCommandPrivate;
+
+#define TYPE_EVENT_SOURCE (event_source_get_type ())
+#define EVENT_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EVENT_SOURCE, EventSource))
+#define EVENT_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EVENT_SOURCE, EventSourceClass))
+#define IS_EVENT_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EVENT_SOURCE))
+#define IS_EVENT_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EVENT_SOURCE))
+#define EVENT_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EVENT_SOURCE, EventSourceClass))
+
+typedef struct _EventSource EventSource;
+typedef struct _EventSourceClass EventSourceClass;
+
+#define TYPE_EVENT (event_get_type ())
+#define EVENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EVENT, Event))
+#define EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EVENT, EventClass))
+#define IS_EVENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EVENT))
+#define IS_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EVENT))
+#define EVENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EVENT, EventClass))
+
+typedef struct _Event Event;
+typedef struct _EventClass EventClass;
+
+#define TYPE_EDIT_EVENT_COMMENT_COMMAND (edit_event_comment_command_get_type ())
+#define EDIT_EVENT_COMMENT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EDIT_EVENT_COMMENT_COMMAND, EditEventCommentCommand))
+#define EDIT_EVENT_COMMENT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EDIT_EVENT_COMMENT_COMMAND, EditEventCommentCommandClass))
+#define IS_EDIT_EVENT_COMMENT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EDIT_EVENT_COMMENT_COMMAND))
+#define IS_EDIT_EVENT_COMMENT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EDIT_EVENT_COMMENT_COMMAND))
+#define EDIT_EVENT_COMMENT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EDIT_EVENT_COMMENT_COMMAND, EditEventCommentCommandClass))
+
+typedef struct _EditEventCommentCommand EditEventCommentCommand;
+typedef struct _EditEventCommentCommandClass EditEventCommentCommandClass;
+typedef struct _EditEventCommentCommandPrivate EditEventCommentCommandPrivate;
+
+#define TYPE_SET_KEY_PHOTO_COMMAND (set_key_photo_command_get_type ())
+#define SET_KEY_PHOTO_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SET_KEY_PHOTO_COMMAND, SetKeyPhotoCommand))
+#define SET_KEY_PHOTO_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SET_KEY_PHOTO_COMMAND, SetKeyPhotoCommandClass))
+#define IS_SET_KEY_PHOTO_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SET_KEY_PHOTO_COMMAND))
+#define IS_SET_KEY_PHOTO_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SET_KEY_PHOTO_COMMAND))
+#define SET_KEY_PHOTO_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SET_KEY_PHOTO_COMMAND, SetKeyPhotoCommandClass))
+
+typedef struct _SetKeyPhotoCommand SetKeyPhotoCommand;
+typedef struct _SetKeyPhotoCommandClass SetKeyPhotoCommandClass;
+typedef struct _SetKeyPhotoCommandPrivate SetKeyPhotoCommandPrivate;
+
+#define TYPE_REVERT_SINGLE_COMMAND (revert_single_command_get_type ())
+#define REVERT_SINGLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_REVERT_SINGLE_COMMAND, RevertSingleCommand))
+#define REVERT_SINGLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_REVERT_SINGLE_COMMAND, RevertSingleCommandClass))
+#define IS_REVERT_SINGLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_REVERT_SINGLE_COMMAND))
+#define IS_REVERT_SINGLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_REVERT_SINGLE_COMMAND))
+#define REVERT_SINGLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_REVERT_SINGLE_COMMAND, RevertSingleCommandClass))
+
+typedef struct _RevertSingleCommand RevertSingleCommand;
+typedef struct _RevertSingleCommandClass RevertSingleCommandClass;
+typedef struct _RevertSingleCommandPrivate RevertSingleCommandPrivate;
+
+#define TYPE_REVERT_MULTIPLE_COMMAND (revert_multiple_command_get_type ())
+#define REVERT_MULTIPLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_REVERT_MULTIPLE_COMMAND, RevertMultipleCommand))
+#define REVERT_MULTIPLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_REVERT_MULTIPLE_COMMAND, RevertMultipleCommandClass))
+#define IS_REVERT_MULTIPLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_REVERT_MULTIPLE_COMMAND))
+#define IS_REVERT_MULTIPLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_REVERT_MULTIPLE_COMMAND))
+#define REVERT_MULTIPLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_REVERT_MULTIPLE_COMMAND, RevertMultipleCommandClass))
+
+typedef struct _RevertMultipleCommand RevertMultipleCommand;
+typedef struct _RevertMultipleCommandClass RevertMultipleCommandClass;
+typedef struct _RevertMultipleCommandPrivate RevertMultipleCommandPrivate;
+
+#define TYPE_ENHANCE_SINGLE_COMMAND (enhance_single_command_get_type ())
+#define ENHANCE_SINGLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ENHANCE_SINGLE_COMMAND, EnhanceSingleCommand))
+#define ENHANCE_SINGLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ENHANCE_SINGLE_COMMAND, EnhanceSingleCommandClass))
+#define IS_ENHANCE_SINGLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ENHANCE_SINGLE_COMMAND))
+#define IS_ENHANCE_SINGLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ENHANCE_SINGLE_COMMAND))
+#define ENHANCE_SINGLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ENHANCE_SINGLE_COMMAND, EnhanceSingleCommandClass))
+
+typedef struct _EnhanceSingleCommand EnhanceSingleCommand;
+typedef struct _EnhanceSingleCommandClass EnhanceSingleCommandClass;
+typedef struct _EnhanceSingleCommandPrivate EnhanceSingleCommandPrivate;
+
+#define TYPE_ENHANCE_MULTIPLE_COMMAND (enhance_multiple_command_get_type ())
+#define ENHANCE_MULTIPLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ENHANCE_MULTIPLE_COMMAND, EnhanceMultipleCommand))
+#define ENHANCE_MULTIPLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ENHANCE_MULTIPLE_COMMAND, EnhanceMultipleCommandClass))
+#define IS_ENHANCE_MULTIPLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ENHANCE_MULTIPLE_COMMAND))
+#define IS_ENHANCE_MULTIPLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ENHANCE_MULTIPLE_COMMAND))
+#define ENHANCE_MULTIPLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ENHANCE_MULTIPLE_COMMAND, EnhanceMultipleCommandClass))
+
+typedef struct _EnhanceMultipleCommand EnhanceMultipleCommand;
+typedef struct _EnhanceMultipleCommandClass EnhanceMultipleCommandClass;
+typedef struct _EnhanceMultipleCommandPrivate EnhanceMultipleCommandPrivate;
+
+#define TYPE_STRAIGHTEN_COMMAND (straighten_command_get_type ())
+#define STRAIGHTEN_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_STRAIGHTEN_COMMAND, StraightenCommand))
+#define STRAIGHTEN_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_STRAIGHTEN_COMMAND, StraightenCommandClass))
+#define IS_STRAIGHTEN_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_STRAIGHTEN_COMMAND))
+#define IS_STRAIGHTEN_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_STRAIGHTEN_COMMAND))
+#define STRAIGHTEN_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_STRAIGHTEN_COMMAND, StraightenCommandClass))
+
+typedef struct _StraightenCommand StraightenCommand;
+typedef struct _StraightenCommandClass StraightenCommandClass;
+typedef struct _StraightenCommandPrivate StraightenCommandPrivate;
+
+#define TYPE_BOX (box_get_type ())
+typedef struct _Box Box;
+
+#define TYPE_CROP_COMMAND (crop_command_get_type ())
+#define CROP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CROP_COMMAND, CropCommand))
+#define CROP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CROP_COMMAND, CropCommandClass))
+#define IS_CROP_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CROP_COMMAND))
+#define IS_CROP_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CROP_COMMAND))
+#define CROP_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CROP_COMMAND, CropCommandClass))
+
+typedef struct _CropCommand CropCommand;
+typedef struct _CropCommandClass CropCommandClass;
+typedef struct _CropCommandPrivate CropCommandPrivate;
+
+#define TYPE_ADJUST_COLORS_SINGLE_COMMAND (adjust_colors_single_command_get_type ())
+#define ADJUST_COLORS_SINGLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADJUST_COLORS_SINGLE_COMMAND, AdjustColorsSingleCommand))
+#define ADJUST_COLORS_SINGLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADJUST_COLORS_SINGLE_COMMAND, AdjustColorsSingleCommandClass))
+#define IS_ADJUST_COLORS_SINGLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADJUST_COLORS_SINGLE_COMMAND))
+#define IS_ADJUST_COLORS_SINGLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADJUST_COLORS_SINGLE_COMMAND))
+#define ADJUST_COLORS_SINGLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADJUST_COLORS_SINGLE_COMMAND, AdjustColorsSingleCommandClass))
+
+typedef struct _AdjustColorsSingleCommand AdjustColorsSingleCommand;
+typedef struct _AdjustColorsSingleCommandClass AdjustColorsSingleCommandClass;
+typedef struct _AdjustColorsSingleCommandPrivate AdjustColorsSingleCommandPrivate;
+
+#define TYPE_PIXEL_TRANSFORMATION_BUNDLE (pixel_transformation_bundle_get_type ())
+#define PIXEL_TRANSFORMATION_BUNDLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PIXEL_TRANSFORMATION_BUNDLE, PixelTransformationBundle))
+#define PIXEL_TRANSFORMATION_BUNDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PIXEL_TRANSFORMATION_BUNDLE, PixelTransformationBundleClass))
+#define IS_PIXEL_TRANSFORMATION_BUNDLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PIXEL_TRANSFORMATION_BUNDLE))
+#define IS_PIXEL_TRANSFORMATION_BUNDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PIXEL_TRANSFORMATION_BUNDLE))
+#define PIXEL_TRANSFORMATION_BUNDLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PIXEL_TRANSFORMATION_BUNDLE, PixelTransformationBundleClass))
+
+typedef struct _PixelTransformationBundle PixelTransformationBundle;
+typedef struct _PixelTransformationBundleClass PixelTransformationBundleClass;
+#define _pixel_transformation_bundle_unref0(var) ((var == NULL) ? NULL : (var = (pixel_transformation_bundle_unref (var), NULL)))
+
+#define TYPE_ADJUST_COLORS_MULTIPLE_COMMAND (adjust_colors_multiple_command_get_type ())
+#define ADJUST_COLORS_MULTIPLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADJUST_COLORS_MULTIPLE_COMMAND, AdjustColorsMultipleCommand))
+#define ADJUST_COLORS_MULTIPLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADJUST_COLORS_MULTIPLE_COMMAND, AdjustColorsMultipleCommandClass))
+#define IS_ADJUST_COLORS_MULTIPLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADJUST_COLORS_MULTIPLE_COMMAND))
+#define IS_ADJUST_COLORS_MULTIPLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADJUST_COLORS_MULTIPLE_COMMAND))
+#define ADJUST_COLORS_MULTIPLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADJUST_COLORS_MULTIPLE_COMMAND, AdjustColorsMultipleCommandClass))
+
+typedef struct _AdjustColorsMultipleCommand AdjustColorsMultipleCommand;
+typedef struct _AdjustColorsMultipleCommandClass AdjustColorsMultipleCommandClass;
+typedef struct _AdjustColorsMultipleCommandPrivate AdjustColorsMultipleCommandPrivate;
+
+#define TYPE_REDEYE_COMMAND (redeye_command_get_type ())
+#define REDEYE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_REDEYE_COMMAND, RedeyeCommand))
+#define REDEYE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_REDEYE_COMMAND, RedeyeCommandClass))
+#define IS_REDEYE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_REDEYE_COMMAND))
+#define IS_REDEYE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_REDEYE_COMMAND))
+#define REDEYE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_REDEYE_COMMAND, RedeyeCommandClass))
+
+typedef struct _RedeyeCommand RedeyeCommand;
+typedef struct _RedeyeCommandClass RedeyeCommandClass;
+typedef struct _RedeyeCommandPrivate RedeyeCommandPrivate;
+
+#define EDITING_TOOLS_TYPE_REDEYE_INSTANCE (editing_tools_redeye_instance_get_type ())
+typedef struct _EditingToolsRedeyeInstance EditingToolsRedeyeInstance;
+
+#define TYPE_MOVE_PHOTOS_COMMAND (move_photos_command_get_type ())
+#define MOVE_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand))
+#define MOVE_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommandClass))
+#define IS_MOVE_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MOVE_PHOTOS_COMMAND))
+#define IS_MOVE_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MOVE_PHOTOS_COMMAND))
+#define MOVE_PHOTOS_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommandClass))
+
+typedef struct _MovePhotosCommand MovePhotosCommand;
+typedef struct _MovePhotosCommandClass MovePhotosCommandClass;
+typedef struct _MovePhotosCommandPrivate MovePhotosCommandPrivate;
+
+#define MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND (move_photos_command_real_move_photos_command_get_type ())
+#define MOVE_PHOTOS_COMMAND_REAL_MOVE_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND, MovePhotosCommandRealMovePhotosCommand))
+#define MOVE_PHOTOS_COMMAND_REAL_MOVE_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND, MovePhotosCommandRealMovePhotosCommandClass))
+#define MOVE_PHOTOS_COMMAND_IS_REAL_MOVE_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND))
+#define MOVE_PHOTOS_COMMAND_IS_REAL_MOVE_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND))
+#define MOVE_PHOTOS_COMMAND_REAL_MOVE_PHOTOS_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND, MovePhotosCommandRealMovePhotosCommandClass))
+
+typedef struct _MovePhotosCommandRealMovePhotosCommand MovePhotosCommandRealMovePhotosCommand;
+typedef struct _MovePhotosCommandRealMovePhotosCommandClass MovePhotosCommandRealMovePhotosCommandClass;
+typedef struct _MovePhotosCommandRealMovePhotosCommandPrivate MovePhotosCommandRealMovePhotosCommandPrivate;
+
+#define TYPE_EVENT_PAGE (event_page_get_type ())
+#define EVENT_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EVENT_PAGE, EventPage))
+#define EVENT_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EVENT_PAGE, EventPageClass))
+#define IS_EVENT_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EVENT_PAGE))
+#define IS_EVENT_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EVENT_PAGE))
+#define EVENT_PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EVENT_PAGE, EventPageClass))
+
+typedef struct _EventPage EventPage;
+typedef struct _EventPageClass EventPageClass;
+
+#define TYPE_NEW_EVENT_COMMAND (new_event_command_get_type ())
+#define NEW_EVENT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NEW_EVENT_COMMAND, NewEventCommand))
+#define NEW_EVENT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NEW_EVENT_COMMAND, NewEventCommandClass))
+#define IS_NEW_EVENT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NEW_EVENT_COMMAND))
+#define IS_NEW_EVENT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_NEW_EVENT_COMMAND))
+#define NEW_EVENT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NEW_EVENT_COMMAND, NewEventCommandClass))
+
+typedef struct _NewEventCommand NewEventCommand;
+typedef struct _NewEventCommandClass NewEventCommandClass;
+typedef struct _NewEventCommandPrivate NewEventCommandPrivate;
+
+#define TYPE_SET_EVENT_COMMAND (set_event_command_get_type ())
+#define SET_EVENT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SET_EVENT_COMMAND, SetEventCommand))
+#define SET_EVENT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SET_EVENT_COMMAND, SetEventCommandClass))
+#define IS_SET_EVENT_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SET_EVENT_COMMAND))
+#define IS_SET_EVENT_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SET_EVENT_COMMAND))
+#define SET_EVENT_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SET_EVENT_COMMAND, SetEventCommandClass))
+
+typedef struct _SetEventCommand SetEventCommand;
+typedef struct _SetEventCommandClass SetEventCommandClass;
+typedef struct _SetEventCommandPrivate SetEventCommandPrivate;
+
+#define TYPE_MERGE_EVENTS_COMMAND (merge_events_command_get_type ())
+#define MERGE_EVENTS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MERGE_EVENTS_COMMAND, MergeEventsCommand))
+#define MERGE_EVENTS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MERGE_EVENTS_COMMAND, MergeEventsCommandClass))
+#define IS_MERGE_EVENTS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MERGE_EVENTS_COMMAND))
+#define IS_MERGE_EVENTS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MERGE_EVENTS_COMMAND))
+#define MERGE_EVENTS_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MERGE_EVENTS_COMMAND, MergeEventsCommandClass))
+
+typedef struct _MergeEventsCommand MergeEventsCommand;
+typedef struct _MergeEventsCommandClass MergeEventsCommandClass;
+typedef struct _MergeEventsCommandPrivate MergeEventsCommandPrivate;
+
+#define TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND (duplicate_multiple_photos_command_get_type ())
+#define DUPLICATE_MULTIPLE_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND, DuplicateMultiplePhotosCommand))
+#define DUPLICATE_MULTIPLE_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND, DuplicateMultiplePhotosCommandClass))
+#define IS_DUPLICATE_MULTIPLE_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND))
+#define IS_DUPLICATE_MULTIPLE_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND))
+#define DUPLICATE_MULTIPLE_PHOTOS_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND, DuplicateMultiplePhotosCommandClass))
+
+typedef struct _DuplicateMultiplePhotosCommand DuplicateMultiplePhotosCommand;
+typedef struct _DuplicateMultiplePhotosCommandClass DuplicateMultiplePhotosCommandClass;
+typedef struct _DuplicateMultiplePhotosCommandPrivate DuplicateMultiplePhotosCommandPrivate;
+
+#define TYPE_LIBRARY_PHOTO (library_photo_get_type ())
+#define LIBRARY_PHOTO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LIBRARY_PHOTO, LibraryPhoto))
+#define LIBRARY_PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LIBRARY_PHOTO, LibraryPhotoClass))
+#define IS_LIBRARY_PHOTO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LIBRARY_PHOTO))
+#define IS_LIBRARY_PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LIBRARY_PHOTO))
+#define LIBRARY_PHOTO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LIBRARY_PHOTO, LibraryPhotoClass))
+
+typedef struct _LibraryPhoto LibraryPhoto;
+typedef struct _LibraryPhotoClass LibraryPhotoClass;
+
+#define TYPE_LIBRARY_PHOTO_SOURCE_COLLECTION (library_photo_source_collection_get_type ())
+#define LIBRARY_PHOTO_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LIBRARY_PHOTO_SOURCE_COLLECTION, LibraryPhotoSourceCollection))
+#define LIBRARY_PHOTO_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LIBRARY_PHOTO_SOURCE_COLLECTION, LibraryPhotoSourceCollectionClass))
+#define IS_LIBRARY_PHOTO_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LIBRARY_PHOTO_SOURCE_COLLECTION))
+#define IS_LIBRARY_PHOTO_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LIBRARY_PHOTO_SOURCE_COLLECTION))
+#define LIBRARY_PHOTO_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LIBRARY_PHOTO_SOURCE_COLLECTION, LibraryPhotoSourceCollectionClass))
+
+typedef struct _LibraryPhotoSourceCollection LibraryPhotoSourceCollection;
+typedef struct _LibraryPhotoSourceCollectionClass LibraryPhotoSourceCollectionClass;
+
+#define TYPE_MARKER (marker_get_type ())
+#define MARKER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MARKER, Marker))
+#define IS_MARKER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MARKER))
+#define MARKER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_MARKER, MarkerIface))
+
+typedef struct _Marker Marker;
+typedef struct _MarkerIface MarkerIface;
+
+#define TYPE_SET_RATING_SINGLE_COMMAND (set_rating_single_command_get_type ())
+#define SET_RATING_SINGLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SET_RATING_SINGLE_COMMAND, SetRatingSingleCommand))
+#define SET_RATING_SINGLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SET_RATING_SINGLE_COMMAND, SetRatingSingleCommandClass))
+#define IS_SET_RATING_SINGLE_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SET_RATING_SINGLE_COMMAND))
+#define IS_SET_RATING_SINGLE_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SET_RATING_SINGLE_COMMAND))
+#define SET_RATING_SINGLE_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SET_RATING_SINGLE_COMMAND, SetRatingSingleCommandClass))
+
+typedef struct _SetRatingSingleCommand SetRatingSingleCommand;
+typedef struct _SetRatingSingleCommandClass SetRatingSingleCommandClass;
+typedef struct _SetRatingSingleCommandPrivate SetRatingSingleCommandPrivate;
+
+#define TYPE_RATING (rating_get_type ())
+
+#define TYPE_SET_RATING_COMMAND (set_rating_command_get_type ())
+#define SET_RATING_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SET_RATING_COMMAND, SetRatingCommand))
+#define SET_RATING_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SET_RATING_COMMAND, SetRatingCommandClass))
+#define IS_SET_RATING_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SET_RATING_COMMAND))
+#define IS_SET_RATING_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SET_RATING_COMMAND))
+#define SET_RATING_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SET_RATING_COMMAND, SetRatingCommandClass))
+
+typedef struct _SetRatingCommand SetRatingCommand;
+typedef struct _SetRatingCommandClass SetRatingCommandClass;
+typedef struct _SetRatingCommandPrivate SetRatingCommandPrivate;
+
+#define TYPE_SET_RAW_DEVELOPER_COMMAND (set_raw_developer_command_get_type ())
+#define SET_RAW_DEVELOPER_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SET_RAW_DEVELOPER_COMMAND, SetRawDeveloperCommand))
+#define SET_RAW_DEVELOPER_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SET_RAW_DEVELOPER_COMMAND, SetRawDeveloperCommandClass))
+#define IS_SET_RAW_DEVELOPER_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SET_RAW_DEVELOPER_COMMAND))
+#define IS_SET_RAW_DEVELOPER_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SET_RAW_DEVELOPER_COMMAND))
+#define SET_RAW_DEVELOPER_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SET_RAW_DEVELOPER_COMMAND, SetRawDeveloperCommandClass))
+
+typedef struct _SetRawDeveloperCommand SetRawDeveloperCommand;
+typedef struct _SetRawDeveloperCommandClass SetRawDeveloperCommandClass;
+typedef struct _SetRawDeveloperCommandPrivate SetRawDeveloperCommandPrivate;
+
+#define TYPE_RAW_DEVELOPER (raw_developer_get_type ())
+
+#define TYPE_PHOTO_FILE_FORMAT (photo_file_format_get_type ())
+
+#define TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND (adjust_date_time_photo_command_get_type ())
+#define ADJUST_DATE_TIME_PHOTO_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND, AdjustDateTimePhotoCommand))
+#define ADJUST_DATE_TIME_PHOTO_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND, AdjustDateTimePhotoCommandClass))
+#define IS_ADJUST_DATE_TIME_PHOTO_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND))
+#define IS_ADJUST_DATE_TIME_PHOTO_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND))
+#define ADJUST_DATE_TIME_PHOTO_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND, AdjustDateTimePhotoCommandClass))
+
+typedef struct _AdjustDateTimePhotoCommand AdjustDateTimePhotoCommand;
+typedef struct _AdjustDateTimePhotoCommandClass AdjustDateTimePhotoCommandClass;
+typedef struct _AdjustDateTimePhotoCommandPrivate AdjustDateTimePhotoCommandPrivate;
+
+#define TYPE_DATEABLE (dateable_get_type ())
+#define DATEABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATEABLE, Dateable))
+#define IS_DATEABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATEABLE))
+#define DATEABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_DATEABLE, DateableIface))
+
+typedef struct _Dateable Dateable;
+typedef struct _DateableIface DateableIface;
+
+#define TYPE_CONTAINER_SOURCE_COLLECTION (container_source_collection_get_type ())
+#define CONTAINER_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CONTAINER_SOURCE_COLLECTION, ContainerSourceCollection))
+#define CONTAINER_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CONTAINER_SOURCE_COLLECTION, ContainerSourceCollectionClass))
+#define IS_CONTAINER_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CONTAINER_SOURCE_COLLECTION))
+#define IS_CONTAINER_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CONTAINER_SOURCE_COLLECTION))
+#define CONTAINER_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CONTAINER_SOURCE_COLLECTION, ContainerSourceCollectionClass))
+
+typedef struct _ContainerSourceCollection ContainerSourceCollection;
+typedef struct _ContainerSourceCollectionClass ContainerSourceCollectionClass;
+
+#define TYPE_EVENT_SOURCE_COLLECTION (event_source_collection_get_type ())
+#define EVENT_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EVENT_SOURCE_COLLECTION, EventSourceCollection))
+#define EVENT_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EVENT_SOURCE_COLLECTION, EventSourceCollectionClass))
+#define IS_EVENT_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EVENT_SOURCE_COLLECTION))
+#define IS_EVENT_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EVENT_SOURCE_COLLECTION))
+#define EVENT_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EVENT_SOURCE_COLLECTION, EventSourceCollectionClass))
+
+typedef struct _EventSourceCollection EventSourceCollection;
+typedef struct _EventSourceCollectionClass EventSourceCollectionClass;
+
+#define TYPE_EVENT_VIEW (event_view_get_type ())
+#define EVENT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EVENT_VIEW, EventView))
+#define EVENT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EVENT_VIEW, EventViewClass))
+#define IS_EVENT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EVENT_VIEW))
+#define IS_EVENT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EVENT_VIEW))
+#define EVENT_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EVENT_VIEW, EventViewClass))
+
+typedef struct _EventView EventView;
+typedef struct _EventViewClass EventViewClass;
+
+#define TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND (adjust_date_time_photos_command_get_type ())
+#define ADJUST_DATE_TIME_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND, AdjustDateTimePhotosCommand))
+#define ADJUST_DATE_TIME_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND, AdjustDateTimePhotosCommandClass))
+#define IS_ADJUST_DATE_TIME_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND))
+#define IS_ADJUST_DATE_TIME_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND))
+#define ADJUST_DATE_TIME_PHOTOS_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND, AdjustDateTimePhotosCommandClass))
+
+typedef struct _AdjustDateTimePhotosCommand AdjustDateTimePhotosCommand;
+typedef struct _AdjustDateTimePhotosCommandClass AdjustDateTimePhotosCommandClass;
+typedef struct _AdjustDateTimePhotosCommandPrivate AdjustDateTimePhotosCommandPrivate;
+
+#define TYPE_ADD_TAGS_COMMAND (add_tags_command_get_type ())
+#define ADD_TAGS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_TAGS_COMMAND, AddTagsCommand))
+#define ADD_TAGS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_TAGS_COMMAND, AddTagsCommandClass))
+#define IS_ADD_TAGS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_TAGS_COMMAND))
+#define IS_ADD_TAGS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_TAGS_COMMAND))
+#define ADD_TAGS_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_TAGS_COMMAND, AddTagsCommandClass))
+
+typedef struct _AddTagsCommand AddTagsCommand;
+typedef struct _AddTagsCommandClass AddTagsCommandClass;
+typedef struct _AddTagsCommandPrivate AddTagsCommandPrivate;
+
+#define TYPE_VIDEO_SOURCE_COLLECTION (video_source_collection_get_type ())
+#define VIDEO_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VIDEO_SOURCE_COLLECTION, VideoSourceCollection))
+#define VIDEO_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VIDEO_SOURCE_COLLECTION, VideoSourceCollectionClass))
+#define IS_VIDEO_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VIDEO_SOURCE_COLLECTION))
+#define IS_VIDEO_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VIDEO_SOURCE_COLLECTION))
+#define VIDEO_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VIDEO_SOURCE_COLLECTION, VideoSourceCollectionClass))
+
+typedef struct _VideoSourceCollection VideoSourceCollection;
+typedef struct _VideoSourceCollectionClass VideoSourceCollectionClass;
+
+#define TYPE_TAG (tag_get_type ())
+#define TAG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TAG, Tag))
+#define TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TAG, TagClass))
+#define IS_TAG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TAG))
+#define IS_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TAG))
+#define TAG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TAG, TagClass))
+
+typedef struct _Tag Tag;
+typedef struct _TagClass TagClass;
+
+#define TYPE_RENAME_TAG_COMMAND (rename_tag_command_get_type ())
+#define RENAME_TAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_RENAME_TAG_COMMAND, RenameTagCommand))
+#define RENAME_TAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_RENAME_TAG_COMMAND, RenameTagCommandClass))
+#define IS_RENAME_TAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_RENAME_TAG_COMMAND))
+#define IS_RENAME_TAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_RENAME_TAG_COMMAND))
+#define RENAME_TAG_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_RENAME_TAG_COMMAND, RenameTagCommandClass))
+
+typedef struct _RenameTagCommand RenameTagCommand;
+typedef struct _RenameTagCommandClass RenameTagCommandClass;
+typedef struct _RenameTagCommandPrivate RenameTagCommandPrivate;
+
+#define TYPE_DELETE_TAG_COMMAND (delete_tag_command_get_type ())
+#define DELETE_TAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DELETE_TAG_COMMAND, DeleteTagCommand))
+#define DELETE_TAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DELETE_TAG_COMMAND, DeleteTagCommandClass))
+#define IS_DELETE_TAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DELETE_TAG_COMMAND))
+#define IS_DELETE_TAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DELETE_TAG_COMMAND))
+#define DELETE_TAG_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DELETE_TAG_COMMAND, DeleteTagCommandClass))
+
+typedef struct _DeleteTagCommand DeleteTagCommand;
+typedef struct _DeleteTagCommandClass DeleteTagCommandClass;
+typedef struct _DeleteTagCommandPrivate DeleteTagCommandPrivate;
+
+#define TYPE_TAG_SOURCE_COLLECTION (tag_source_collection_get_type ())
+#define TAG_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TAG_SOURCE_COLLECTION, TagSourceCollection))
+#define TAG_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TAG_SOURCE_COLLECTION, TagSourceCollectionClass))
+#define IS_TAG_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TAG_SOURCE_COLLECTION))
+#define IS_TAG_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TAG_SOURCE_COLLECTION))
+#define TAG_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TAG_SOURCE_COLLECTION, TagSourceCollectionClass))
+
+typedef struct _TagSourceCollection TagSourceCollection;
+typedef struct _TagSourceCollectionClass TagSourceCollectionClass;
+
+#define TYPE_NEW_CHILD_TAG_COMMAND (new_child_tag_command_get_type ())
+#define NEW_CHILD_TAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NEW_CHILD_TAG_COMMAND, NewChildTagCommand))
+#define NEW_CHILD_TAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NEW_CHILD_TAG_COMMAND, NewChildTagCommandClass))
+#define IS_NEW_CHILD_TAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NEW_CHILD_TAG_COMMAND))
+#define IS_NEW_CHILD_TAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_NEW_CHILD_TAG_COMMAND))
+#define NEW_CHILD_TAG_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NEW_CHILD_TAG_COMMAND, NewChildTagCommandClass))
+
+typedef struct _NewChildTagCommand NewChildTagCommand;
+typedef struct _NewChildTagCommandClass NewChildTagCommandClass;
+typedef struct _NewChildTagCommandPrivate NewChildTagCommandPrivate;
+
+#define TYPE_NEW_ROOT_TAG_COMMAND (new_root_tag_command_get_type ())
+#define NEW_ROOT_TAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NEW_ROOT_TAG_COMMAND, NewRootTagCommand))
+#define NEW_ROOT_TAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NEW_ROOT_TAG_COMMAND, NewRootTagCommandClass))
+#define IS_NEW_ROOT_TAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NEW_ROOT_TAG_COMMAND))
+#define IS_NEW_ROOT_TAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_NEW_ROOT_TAG_COMMAND))
+#define NEW_ROOT_TAG_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NEW_ROOT_TAG_COMMAND, NewRootTagCommandClass))
+
+typedef struct _NewRootTagCommand NewRootTagCommand;
+typedef struct _NewRootTagCommandClass NewRootTagCommandClass;
+typedef struct _NewRootTagCommandPrivate NewRootTagCommandPrivate;
+
+#define TYPE_REPARENT_TAG_COMMAND (reparent_tag_command_get_type ())
+#define REPARENT_TAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_REPARENT_TAG_COMMAND, ReparentTagCommand))
+#define REPARENT_TAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_REPARENT_TAG_COMMAND, ReparentTagCommandClass))
+#define IS_REPARENT_TAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_REPARENT_TAG_COMMAND))
+#define IS_REPARENT_TAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_REPARENT_TAG_COMMAND))
+#define REPARENT_TAG_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_REPARENT_TAG_COMMAND, ReparentTagCommandClass))
+
+typedef struct _ReparentTagCommand ReparentTagCommand;
+typedef struct _ReparentTagCommandClass ReparentTagCommandClass;
+typedef struct _ReparentTagCommandPrivate ReparentTagCommandPrivate;
+#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
+
+#define TYPE_MODIFY_TAGS_COMMAND (modify_tags_command_get_type ())
+#define MODIFY_TAGS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MODIFY_TAGS_COMMAND, ModifyTagsCommand))
+#define MODIFY_TAGS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MODIFY_TAGS_COMMAND, ModifyTagsCommandClass))
+#define IS_MODIFY_TAGS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MODIFY_TAGS_COMMAND))
+#define IS_MODIFY_TAGS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MODIFY_TAGS_COMMAND))
+#define MODIFY_TAGS_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MODIFY_TAGS_COMMAND, ModifyTagsCommandClass))
+
+typedef struct _ModifyTagsCommand ModifyTagsCommand;
+typedef struct _ModifyTagsCommandClass ModifyTagsCommandClass;
+typedef struct _ModifyTagsCommandPrivate ModifyTagsCommandPrivate;
+
+#define TYPE_TAG_UNTAG_PHOTOS_COMMAND (tag_untag_photos_command_get_type ())
+#define TAG_UNTAG_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TAG_UNTAG_PHOTOS_COMMAND, TagUntagPhotosCommand))
+#define TAG_UNTAG_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TAG_UNTAG_PHOTOS_COMMAND, TagUntagPhotosCommandClass))
+#define IS_TAG_UNTAG_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TAG_UNTAG_PHOTOS_COMMAND))
+#define IS_TAG_UNTAG_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TAG_UNTAG_PHOTOS_COMMAND))
+#define TAG_UNTAG_PHOTOS_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TAG_UNTAG_PHOTOS_COMMAND, TagUntagPhotosCommandClass))
+
+typedef struct _TagUntagPhotosCommand TagUntagPhotosCommand;
+typedef struct _TagUntagPhotosCommandClass TagUntagPhotosCommandClass;
+typedef struct _TagUntagPhotosCommandPrivate TagUntagPhotosCommandPrivate;
+
+#define TYPE_RENAME_SAVED_SEARCH_COMMAND (rename_saved_search_command_get_type ())
+#define RENAME_SAVED_SEARCH_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_RENAME_SAVED_SEARCH_COMMAND, RenameSavedSearchCommand))
+#define RENAME_SAVED_SEARCH_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_RENAME_SAVED_SEARCH_COMMAND, RenameSavedSearchCommandClass))
+#define IS_RENAME_SAVED_SEARCH_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_RENAME_SAVED_SEARCH_COMMAND))
+#define IS_RENAME_SAVED_SEARCH_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_RENAME_SAVED_SEARCH_COMMAND))
+#define RENAME_SAVED_SEARCH_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_RENAME_SAVED_SEARCH_COMMAND, RenameSavedSearchCommandClass))
+
+typedef struct _RenameSavedSearchCommand RenameSavedSearchCommand;
+typedef struct _RenameSavedSearchCommandClass RenameSavedSearchCommandClass;
+typedef struct _RenameSavedSearchCommandPrivate RenameSavedSearchCommandPrivate;
+
+#define TYPE_SAVED_SEARCH (saved_search_get_type ())
+#define SAVED_SEARCH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SAVED_SEARCH, SavedSearch))
+#define SAVED_SEARCH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SAVED_SEARCH, SavedSearchClass))
+#define IS_SAVED_SEARCH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SAVED_SEARCH))
+#define IS_SAVED_SEARCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SAVED_SEARCH))
+#define SAVED_SEARCH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SAVED_SEARCH, SavedSearchClass))
+
+typedef struct _SavedSearch SavedSearch;
+typedef struct _SavedSearchClass SavedSearchClass;
+
+#define TYPE_DELETE_SAVED_SEARCH_COMMAND (delete_saved_search_command_get_type ())
+#define DELETE_SAVED_SEARCH_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DELETE_SAVED_SEARCH_COMMAND, DeleteSavedSearchCommand))
+#define DELETE_SAVED_SEARCH_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DELETE_SAVED_SEARCH_COMMAND, DeleteSavedSearchCommandClass))
+#define IS_DELETE_SAVED_SEARCH_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DELETE_SAVED_SEARCH_COMMAND))
+#define IS_DELETE_SAVED_SEARCH_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DELETE_SAVED_SEARCH_COMMAND))
+#define DELETE_SAVED_SEARCH_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DELETE_SAVED_SEARCH_COMMAND, DeleteSavedSearchCommandClass))
+
+typedef struct _DeleteSavedSearchCommand DeleteSavedSearchCommand;
+typedef struct _DeleteSavedSearchCommandClass DeleteSavedSearchCommandClass;
+typedef struct _DeleteSavedSearchCommandPrivate DeleteSavedSearchCommandPrivate;
+
+#define TYPE_SAVED_SEARCH_TABLE (saved_search_table_get_type ())
+#define SAVED_SEARCH_TABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SAVED_SEARCH_TABLE, SavedSearchTable))
+#define SAVED_SEARCH_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SAVED_SEARCH_TABLE, SavedSearchTableClass))
+#define IS_SAVED_SEARCH_TABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SAVED_SEARCH_TABLE))
+#define IS_SAVED_SEARCH_TABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SAVED_SEARCH_TABLE))
+#define SAVED_SEARCH_TABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SAVED_SEARCH_TABLE, SavedSearchTableClass))
+
+typedef struct _SavedSearchTable SavedSearchTable;
+typedef struct _SavedSearchTableClass SavedSearchTableClass;
+#define _saved_search_table_unref0(var) ((var == NULL) ? NULL : (var = (saved_search_table_unref (var), NULL)))
+
+#define TYPE_TRASH_UNTRASH_PHOTOS_COMMAND (trash_untrash_photos_command_get_type ())
+#define TRASH_UNTRASH_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRASH_UNTRASH_PHOTOS_COMMAND, TrashUntrashPhotosCommand))
+#define TRASH_UNTRASH_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRASH_UNTRASH_PHOTOS_COMMAND, TrashUntrashPhotosCommandClass))
+#define IS_TRASH_UNTRASH_PHOTOS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRASH_UNTRASH_PHOTOS_COMMAND))
+#define IS_TRASH_UNTRASH_PHOTOS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRASH_UNTRASH_PHOTOS_COMMAND))
+#define TRASH_UNTRASH_PHOTOS_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRASH_UNTRASH_PHOTOS_COMMAND, TrashUntrashPhotosCommandClass))
+
+typedef struct _TrashUntrashPhotosCommand TrashUntrashPhotosCommand;
+typedef struct _TrashUntrashPhotosCommandClass TrashUntrashPhotosCommandClass;
+typedef struct _TrashUntrashPhotosCommandPrivate TrashUntrashPhotosCommandPrivate;
+
+#define TYPE_FLAG_UNFLAG_COMMAND (flag_unflag_command_get_type ())
+#define FLAG_UNFLAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FLAG_UNFLAG_COMMAND, FlagUnflagCommand))
+#define FLAG_UNFLAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FLAG_UNFLAG_COMMAND, FlagUnflagCommandClass))
+#define IS_FLAG_UNFLAG_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FLAG_UNFLAG_COMMAND))
+#define IS_FLAG_UNFLAG_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FLAG_UNFLAG_COMMAND))
+#define FLAG_UNFLAG_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FLAG_UNFLAG_COMMAND, FlagUnflagCommandClass))
+
+typedef struct _FlagUnflagCommand FlagUnflagCommand;
+typedef struct _FlagUnflagCommandClass FlagUnflagCommandClass;
+typedef struct _FlagUnflagCommandPrivate FlagUnflagCommandPrivate;
+
+#define TYPE_FLAGGABLE (flaggable_get_type ())
+#define FLAGGABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FLAGGABLE, Flaggable))
+#define IS_FLAGGABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FLAGGABLE))
+#define FLAGGABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_FLAGGABLE, FlaggableIface))
+
+typedef struct _Flaggable Flaggable;
+typedef struct _FlaggableIface FlaggableIface;
+#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
+#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
+#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
+#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
+
+struct _CommandDescriptionIface {
+ GTypeInterface parent_iface;
+ gchar* (*get_name) (CommandDescription* self);
+ gchar* (*get_explanation) (CommandDescription* self);
+};
+
+struct _Command {
+ GObject parent_instance;
+ CommandPrivate * priv;
+};
+
+struct _CommandClass {
+ GObjectClass parent_class;
+ void (*prepare) (Command* self);
+ void (*execute) (Command* self);
+ void (*undo) (Command* self);
+ void (*redo) (Command* self);
+ gboolean (*compress) (Command* self, Command* command);
+ gchar* (*get_name) (Command* self);
+ gchar* (*get_explanation) (Command* self);
+};
+
+struct _PageCommand {
+ Command parent_instance;
+ PageCommandPrivate * priv;
+};
+
+struct _PageCommandClass {
+ CommandClass parent_class;
+};
+
+struct _PageCommandPrivate {
+ Page* page;
+ gboolean auto_return;
+ Photo* library_photo;
+ CollectionPage* collection_page;
+};
+
+struct _SingleDataSourceCommand {
+ PageCommand parent_instance;
+ SingleDataSourceCommandPrivate * priv;
+ DataSource* source;
+};
+
+struct _SingleDataSourceCommandClass {
+ PageCommandClass parent_class;
+};
+
+struct _SimpleProxyableCommand {
+ PageCommand parent_instance;
+ SimpleProxyableCommandPrivate * priv;
+};
+
+struct _SimpleProxyableCommandClass {
+ PageCommandClass parent_class;
+ void (*execute_on_source) (SimpleProxyableCommand* self, DataSource* source);
+ void (*undo_on_source) (SimpleProxyableCommand* self, DataSource* source);
+};
+
+struct _SimpleProxyableCommandPrivate {
+ SourceProxy* proxy;
+ GeeHashSet* proxies;
+};
+
+struct _ProxyableIface {
+ GTypeInterface parent_iface;
+ SourceProxy* (*get_proxy) (Proxyable* self);
+};
+
+struct _SinglePhotoTransformationCommand {
+ SingleDataSourceCommand parent_instance;
+ SinglePhotoTransformationCommandPrivate * priv;
+};
+
+struct _SinglePhotoTransformationCommandClass {
+ SingleDataSourceCommandClass parent_class;
+};
+
+struct _SinglePhotoTransformationCommandPrivate {
+ PhotoTransformationState* state;
+};
+
+struct _GenericPhotoTransformationCommand {
+ SingleDataSourceCommand parent_instance;
+ GenericPhotoTransformationCommandPrivate * priv;
+};
+
+struct _GenericPhotoTransformationCommandClass {
+ SingleDataSourceCommandClass parent_class;
+ void (*execute_on_photo) (GenericPhotoTransformationCommand* self, Photo* photo);
+ gboolean (*can_compress) (GenericPhotoTransformationCommand* self, Command* command);
+};
+
+struct _GenericPhotoTransformationCommandPrivate {
+ PhotoTransformationState* original_state;
+ PhotoTransformationState* transformed_state;
+};
+
+struct _MultipleDataSourceCommand {
+ PageCommand parent_instance;
+ MultipleDataSourceCommandPrivate * priv;
+ GeeArrayList* source_list;
+};
+
+struct _MultipleDataSourceCommandClass {
+ PageCommandClass parent_class;
+ void (*execute_on_source) (MultipleDataSourceCommand* self, DataSource* source);
+ void (*undo_on_source) (MultipleDataSourceCommand* self, DataSource* source);
+};
+
+struct _MultipleDataSourceCommandPrivate {
+ gchar* progress_text;
+ gchar* undo_progress_text;
+ GeeArrayList* acted_upon;
+ GeeHashSet* hooked_collections;
+};
+
+struct _MultipleDataSourceAtOnceCommand {
+ PageCommand parent_instance;
+ MultipleDataSourceAtOnceCommandPrivate * priv;
+};
+
+struct _MultipleDataSourceAtOnceCommandClass {
+ PageCommandClass parent_class;
+ void (*execute_on_all) (MultipleDataSourceAtOnceCommand* self, GeeCollection* sources);
+ void (*undo_on_all) (MultipleDataSourceAtOnceCommand* self, GeeCollection* sources);
+};
+
+struct _MultipleDataSourceAtOnceCommandPrivate {
+ GeeHashSet* sources;
+ GeeHashSet* hooked_collections;
+};
+
+typedef enum {
+ DATABASE_ERROR_ERROR,
+ DATABASE_ERROR_BACKING,
+ DATABASE_ERROR_MEMORY,
+ DATABASE_ERROR_ABORT,
+ DATABASE_ERROR_LIMITS,
+ DATABASE_ERROR_TYPESPEC
+} DatabaseError;
+#define DATABASE_ERROR database_error_quark ()
+struct _MultiplePhotoTransformationCommand {
+ MultipleDataSourceCommand parent_instance;
+ MultiplePhotoTransformationCommandPrivate * priv;
+};
+
+struct _MultiplePhotoTransformationCommandClass {
+ MultipleDataSourceCommandClass parent_class;
+};
+
+struct _MultiplePhotoTransformationCommandPrivate {
+ GeeHashMap* map;
+};
+
+struct _RotateSingleCommand {
+ SingleDataSourceCommand parent_instance;
+ RotateSingleCommandPrivate * priv;
+};
+
+struct _RotateSingleCommandClass {
+ SingleDataSourceCommandClass parent_class;
+};
+
+typedef enum {
+ ROTATION_CLOCKWISE,
+ ROTATION_COUNTERCLOCKWISE,
+ ROTATION_MIRROR,
+ ROTATION_UPSIDE_DOWN
+} Rotation;
+
+struct _RotateSingleCommandPrivate {
+ Rotation rotation;
+};
+
+struct _RotateMultipleCommand {
+ MultipleDataSourceCommand parent_instance;
+ RotateMultipleCommandPrivate * priv;
+};
+
+struct _RotateMultipleCommandClass {
+ MultipleDataSourceCommandClass parent_class;
+};
+
+struct _RotateMultipleCommandPrivate {
+ Rotation rotation;
+};
+
+struct _EditTitleCommand {
+ SingleDataSourceCommand parent_instance;
+ EditTitleCommandPrivate * priv;
+};
+
+struct _EditTitleCommandClass {
+ SingleDataSourceCommandClass parent_class;
+};
+
+struct _EditTitleCommandPrivate {
+ gchar* new_title;
+ gchar* old_title;
+};
+
+struct _EditCommentCommand {
+ SingleDataSourceCommand parent_instance;
+ EditCommentCommandPrivate * priv;
+};
+
+struct _EditCommentCommandClass {
+ SingleDataSourceCommandClass parent_class;
+};
+
+struct _EditCommentCommandPrivate {
+ gchar* new_comment;
+ gchar* old_comment;
+};
+
+struct _EditMultipleTitlesCommand {
+ MultipleDataSourceAtOnceCommand parent_instance;
+ EditMultipleTitlesCommandPrivate * priv;
+ gchar* new_title;
+ GeeHashMap* old_titles;
+};
+
+struct _EditMultipleTitlesCommandClass {
+ MultipleDataSourceAtOnceCommandClass parent_class;
+};
+
+struct _EditMultipleCommentsCommand {
+ MultipleDataSourceAtOnceCommand parent_instance;
+ EditMultipleCommentsCommandPrivate * priv;
+ gchar* new_comment;
+ GeeHashMap* old_comments;
+};
+
+struct _EditMultipleCommentsCommandClass {
+ MultipleDataSourceAtOnceCommandClass parent_class;
+};
+
+struct _RenameEventCommand {
+ SimpleProxyableCommand parent_instance;
+ RenameEventCommandPrivate * priv;
+};
+
+struct _RenameEventCommandClass {
+ SimpleProxyableCommandClass parent_class;
+};
+
+struct _RenameEventCommandPrivate {
+ gchar* new_name;
+ gchar* old_name;
+};
+
+struct _EditEventCommentCommand {
+ SimpleProxyableCommand parent_instance;
+ EditEventCommentCommandPrivate * priv;
+};
+
+struct _EditEventCommentCommandClass {
+ SimpleProxyableCommandClass parent_class;
+};
+
+struct _EditEventCommentCommandPrivate {
+ gchar* new_comment;
+ gchar* old_comment;
+};
+
+struct _SetKeyPhotoCommand {
+ SingleDataSourceCommand parent_instance;
+ SetKeyPhotoCommandPrivate * priv;
+};
+
+struct _SetKeyPhotoCommandClass {
+ SingleDataSourceCommandClass parent_class;
+};
+
+struct _SetKeyPhotoCommandPrivate {
+ MediaSource* new_primary_source;
+ MediaSource* old_primary_source;
+};
+
+struct _RevertSingleCommand {
+ GenericPhotoTransformationCommand parent_instance;
+ RevertSingleCommandPrivate * priv;
+};
+
+struct _RevertSingleCommandClass {
+ GenericPhotoTransformationCommandClass parent_class;
+};
+
+struct _RevertMultipleCommand {
+ MultiplePhotoTransformationCommand parent_instance;
+ RevertMultipleCommandPrivate * priv;
+};
+
+struct _RevertMultipleCommandClass {
+ MultiplePhotoTransformationCommandClass parent_class;
+};
+
+struct _EnhanceSingleCommand {
+ GenericPhotoTransformationCommand parent_instance;
+ EnhanceSingleCommandPrivate * priv;
+};
+
+struct _EnhanceSingleCommandClass {
+ GenericPhotoTransformationCommandClass parent_class;
+};
+
+struct _EnhanceMultipleCommand {
+ MultiplePhotoTransformationCommand parent_instance;
+ EnhanceMultipleCommandPrivate * priv;
+};
+
+struct _EnhanceMultipleCommandClass {
+ MultiplePhotoTransformationCommandClass parent_class;
+};
+
+struct _StraightenCommand {
+ GenericPhotoTransformationCommand parent_instance;
+ StraightenCommandPrivate * priv;
+};
+
+struct _StraightenCommandClass {
+ GenericPhotoTransformationCommandClass parent_class;
+};
+
+struct _Box {
+ gint left;
+ gint top;
+ gint right;
+ gint bottom;
+};
+
+struct _StraightenCommandPrivate {
+ gdouble theta;
+ Box crop;
+};
+
+struct _CropCommand {
+ GenericPhotoTransformationCommand parent_instance;
+ CropCommandPrivate * priv;
+};
+
+struct _CropCommandClass {
+ GenericPhotoTransformationCommandClass parent_class;
+};
+
+struct _CropCommandPrivate {
+ Box crop;
+};
+
+struct _AdjustColorsSingleCommand {
+ GenericPhotoTransformationCommand parent_instance;
+ AdjustColorsSingleCommandPrivate * priv;
+};
+
+struct _AdjustColorsSingleCommandClass {
+ GenericPhotoTransformationCommandClass parent_class;
+};
+
+struct _AdjustColorsSingleCommandPrivate {
+ PixelTransformationBundle* transformations;
+};
+
+struct _AdjustColorsMultipleCommand {
+ MultiplePhotoTransformationCommand parent_instance;
+ AdjustColorsMultipleCommandPrivate * priv;
+};
+
+struct _AdjustColorsMultipleCommandClass {
+ MultiplePhotoTransformationCommandClass parent_class;
+};
+
+struct _AdjustColorsMultipleCommandPrivate {
+ PixelTransformationBundle* transformations;
+};
+
+struct _RedeyeCommand {
+ GenericPhotoTransformationCommand parent_instance;
+ RedeyeCommandPrivate * priv;
+};
+
+struct _RedeyeCommandClass {
+ GenericPhotoTransformationCommandClass parent_class;
+};
+
+struct _EditingToolsRedeyeInstance {
+ GdkPoint center;
+ gint radius;
+};
+
+struct _RedeyeCommandPrivate {
+ EditingToolsRedeyeInstance redeye_instance;
+};
+
+struct _MovePhotosCommand {
+ Command parent_instance;
+ MovePhotosCommandPrivate * priv;
+ MovePhotosCommandRealMovePhotosCommand* real_command;
+};
+
+struct _MovePhotosCommandClass {
+ CommandClass parent_class;
+};
+
+struct _MovePhotosCommandRealMovePhotosCommand {
+ MultipleDataSourceCommand parent_instance;
+ MovePhotosCommandRealMovePhotosCommandPrivate * priv;
+};
+
+struct _MovePhotosCommandRealMovePhotosCommandClass {
+ MultipleDataSourceCommandClass parent_class;
+};
+
+struct _MovePhotosCommandRealMovePhotosCommandPrivate {
+ SourceProxy* new_event_proxy;
+ GeeHashMap* old_events;
+};
+
+struct _NewEventCommand {
+ MovePhotosCommand parent_instance;
+ NewEventCommandPrivate * priv;
+};
+
+struct _NewEventCommandClass {
+ MovePhotosCommandClass parent_class;
+};
+
+struct _SetEventCommand {
+ MovePhotosCommand parent_instance;
+ SetEventCommandPrivate * priv;
+};
+
+struct _SetEventCommandClass {
+ MovePhotosCommandClass parent_class;
+};
+
+struct _MergeEventsCommand {
+ MovePhotosCommand parent_instance;
+ MergeEventsCommandPrivate * priv;
+};
+
+struct _MergeEventsCommandClass {
+ MovePhotosCommandClass parent_class;
+};
+
+struct _DuplicateMultiplePhotosCommand {
+ MultipleDataSourceCommand parent_instance;
+ DuplicateMultiplePhotosCommandPrivate * priv;
+};
+
+struct _DuplicateMultiplePhotosCommandClass {
+ MultipleDataSourceCommandClass parent_class;
+};
+
+struct _DuplicateMultiplePhotosCommandPrivate {
+ GeeHashMap* dupes;
+ gint failed;
+};
+
+struct _MarkerIface {
+ GTypeInterface parent_iface;
+ void (*mark) (Marker* self, DataObject* object);
+ void (*unmark) (Marker* self, DataObject* object);
+ gboolean (*toggle) (Marker* self, DataObject* object);
+ void (*mark_many) (Marker* self, GeeCollection* list);
+ void (*unmark_many) (Marker* self, GeeCollection* list);
+ void (*mark_all) (Marker* self);
+ gint (*get_count) (Marker* self);
+ GeeCollection* (*get_all) (Marker* self);
+};
+
+typedef gboolean (*ProgressMonitor) (guint64 current, guint64 total, gboolean do_event_loop, void* user_data);
+struct _SetRatingSingleCommand {
+ SingleDataSourceCommand parent_instance;
+ SetRatingSingleCommandPrivate * priv;
+};
+
+struct _SetRatingSingleCommandClass {
+ SingleDataSourceCommandClass parent_class;
+};
+
+typedef enum {
+ RATING_REJECTED = -1,
+ RATING_UNRATED = 0,
+ RATING_ONE = 1,
+ RATING_TWO = 2,
+ RATING_THREE = 3,
+ RATING_FOUR = 4,
+ RATING_FIVE = 5
+} Rating;
+
+struct _SetRatingSingleCommandPrivate {
+ Rating last_rating;
+ Rating new_rating;
+ gboolean set_direct;
+ gboolean incrementing;
+};
+
+struct _SetRatingCommand {
+ MultipleDataSourceCommand parent_instance;
+ SetRatingCommandPrivate * priv;
+};
+
+struct _SetRatingCommandClass {
+ MultipleDataSourceCommandClass parent_class;
+};
+
+struct _SetRatingCommandPrivate {
+ GeeHashMap* last_rating_map;
+ Rating new_rating;
+ gboolean set_direct;
+ gboolean incrementing;
+ gint action_count;
+};
+
+struct _SetRawDeveloperCommand {
+ MultipleDataSourceCommand parent_instance;
+ SetRawDeveloperCommandPrivate * priv;
+};
+
+struct _SetRawDeveloperCommandClass {
+ MultipleDataSourceCommandClass parent_class;
+};
+
+typedef enum {
+ RAW_DEVELOPER_SHOTWELL = 0,
+ RAW_DEVELOPER_CAMERA,
+ RAW_DEVELOPER_EMBEDDED
+} RawDeveloper;
+
+struct _SetRawDeveloperCommandPrivate {
+ GeeHashMap* last_developer_map;
+ GeeHashMap* last_transformation_map;
+ RawDeveloper new_developer;
+};
+
+typedef enum {
+ PHOTO_FILE_FORMAT_JFIF,
+ PHOTO_FILE_FORMAT_RAW,
+ PHOTO_FILE_FORMAT_PNG,
+ PHOTO_FILE_FORMAT_TIFF,
+ PHOTO_FILE_FORMAT_BMP,
+ PHOTO_FILE_FORMAT_UNKNOWN
+} PhotoFileFormat;
+
+struct _AdjustDateTimePhotoCommand {
+ SingleDataSourceCommand parent_instance;
+ AdjustDateTimePhotoCommandPrivate * priv;
+};
+
+struct _AdjustDateTimePhotoCommandClass {
+ SingleDataSourceCommandClass parent_class;
+};
+
+struct _DateableIface {
+ GTypeInterface parent_iface;
+ void (*set_exposure_time) (Dateable* self, time_t target_time);
+ time_t (*get_exposure_time) (Dateable* self);
+};
+
+struct _AdjustDateTimePhotoCommandPrivate {
+ Dateable* dateable;
+ Event* prev_event;
+ gint64 time_shift;
+ gboolean modify_original;
+};
+
+struct _AdjustDateTimePhotosCommand {
+ MultipleDataSourceCommand parent_instance;
+ AdjustDateTimePhotosCommandPrivate * priv;
+};
+
+struct _AdjustDateTimePhotosCommandClass {
+ MultipleDataSourceCommandClass parent_class;
+};
+
+struct _AdjustDateTimePhotosCommandPrivate {
+ gint64 time_shift;
+ gboolean keep_relativity;
+ gboolean modify_originals;
+ GeeMap* prev_events;
+ time_t* new_time;
+ GeeHashMap* old_times;
+ GeeArrayList* error_list;
+};
+
+struct _AddTagsCommand {
+ PageCommand parent_instance;
+ AddTagsCommandPrivate * priv;
+};
+
+struct _AddTagsCommandClass {
+ PageCommandClass parent_class;
+};
+
+struct _AddTagsCommandPrivate {
+ GeeHashMap* map;
+};
+
+struct _RenameTagCommand {
+ SimpleProxyableCommand parent_instance;
+ RenameTagCommandPrivate * priv;
+};
+
+struct _RenameTagCommandClass {
+ SimpleProxyableCommandClass parent_class;
+};
+
+struct _RenameTagCommandPrivate {
+ gchar* old_name;
+ gchar* new_name;
+};
+
+struct _DeleteTagCommand {
+ SimpleProxyableCommand parent_instance;
+ DeleteTagCommandPrivate * priv;
+};
+
+struct _DeleteTagCommandClass {
+ SimpleProxyableCommandClass parent_class;
+};
+
+struct _DeleteTagCommandPrivate {
+ GeeList* recursive_victim_proxies;
+};
+
+struct _NewChildTagCommand {
+ SimpleProxyableCommand parent_instance;
+ NewChildTagCommandPrivate * priv;
+};
+
+struct _NewChildTagCommandClass {
+ SimpleProxyableCommandClass parent_class;
+};
+
+struct _NewChildTagCommandPrivate {
+ Tag* created_child;
+};
+
+struct _NewRootTagCommand {
+ PageCommand parent_instance;
+ NewRootTagCommandPrivate * priv;
+};
+
+struct _NewRootTagCommandClass {
+ PageCommandClass parent_class;
+};
+
+struct _NewRootTagCommandPrivate {
+ SourceProxy* created_proxy;
+};
+
+struct _ReparentTagCommand {
+ PageCommand parent_instance;
+ ReparentTagCommandPrivate * priv;
+};
+
+struct _ReparentTagCommandClass {
+ PageCommandClass parent_class;
+};
+
+struct _ReparentTagCommandPrivate {
+ gchar* from_path;
+ gchar* to_path;
+ gchar* to_path_parent_path;
+ GeeList* src_before_state;
+ GeeList* dest_before_state;
+ GeeList* after_state;
+ GeeHashSet* sources_in_play;
+ GeeMap* dest_parent_attachments;
+ GeeMap* src_parent_detachments;
+ GeeMap* in_play_child_structure;
+ GeeMap* existing_dest_child_structure;
+ GeeSet* existing_dest_membership;
+ gboolean to_path_exists;
+};
+
+struct _ModifyTagsCommand {
+ SingleDataSourceCommand parent_instance;
+ ModifyTagsCommandPrivate * priv;
+};
+
+struct _ModifyTagsCommandClass {
+ SingleDataSourceCommandClass parent_class;
+};
+
+struct _ModifyTagsCommandPrivate {
+ MediaSource* media;
+ GeeArrayList* to_add;
+ GeeArrayList* to_remove;
+};
+
+struct _TagUntagPhotosCommand {
+ SimpleProxyableCommand parent_instance;
+ TagUntagPhotosCommandPrivate * priv;
+};
+
+struct _TagUntagPhotosCommandClass {
+ SimpleProxyableCommandClass parent_class;
+};
+
+struct _TagUntagPhotosCommandPrivate {
+ GeeCollection* sources;
+ gboolean attach;
+ GeeMultiMap* detached_from;
+ GeeList* attached_to;
+};
+
+struct _RenameSavedSearchCommand {
+ SingleDataSourceCommand parent_instance;
+ RenameSavedSearchCommandPrivate * priv;
+};
+
+struct _RenameSavedSearchCommandClass {
+ SingleDataSourceCommandClass parent_class;
+};
+
+struct _RenameSavedSearchCommandPrivate {
+ SavedSearch* search;
+ gchar* old_name;
+ gchar* new_name;
+};
+
+struct _DeleteSavedSearchCommand {
+ SingleDataSourceCommand parent_instance;
+ DeleteSavedSearchCommandPrivate * priv;
+};
+
+struct _DeleteSavedSearchCommandClass {
+ SingleDataSourceCommandClass parent_class;
+};
+
+struct _DeleteSavedSearchCommandPrivate {
+ SavedSearch* search;
+};
+
+struct _TrashUntrashPhotosCommand {
+ PageCommand parent_instance;
+ TrashUntrashPhotosCommandPrivate * priv;
+};
+
+struct _TrashUntrashPhotosCommandClass {
+ PageCommandClass parent_class;
+};
+
+struct _TrashUntrashPhotosCommandPrivate {
+ GeeCollection* sources;
+ gboolean to_trash;
+};
+
+struct _FlagUnflagCommand {
+ MultipleDataSourceAtOnceCommand parent_instance;
+ FlagUnflagCommandPrivate * priv;
+};
+
+struct _FlagUnflagCommandClass {
+ MultipleDataSourceAtOnceCommandClass parent_class;
+};
+
+struct _FlagUnflagCommandPrivate {
+ gboolean flag;
+ ProgressDialog* progress_dialog;
+};
+
+struct _FlaggableIface {
+ GTypeInterface parent_iface;
+ gboolean (*is_flagged) (Flaggable* self);
+ void (*mark_flagged) (Flaggable* self);
+ void (*mark_unflagged) (Flaggable* self);
+};
+
+
+static gpointer page_command_parent_class = NULL;
+static gpointer single_data_source_command_parent_class = NULL;
+static gpointer simple_proxyable_command_parent_class = NULL;
+static gpointer single_photo_transformation_command_parent_class = NULL;
+static gpointer generic_photo_transformation_command_parent_class = NULL;
+static gpointer multiple_data_source_command_parent_class = NULL;
+static gpointer multiple_data_source_at_once_command_parent_class = NULL;
+static gpointer multiple_photo_transformation_command_parent_class = NULL;
+static gpointer rotate_single_command_parent_class = NULL;
+static gpointer rotate_multiple_command_parent_class = NULL;
+static gpointer edit_title_command_parent_class = NULL;
+static gpointer edit_comment_command_parent_class = NULL;
+static gpointer edit_multiple_titles_command_parent_class = NULL;
+static gpointer edit_multiple_comments_command_parent_class = NULL;
+static gpointer rename_event_command_parent_class = NULL;
+static gpointer edit_event_comment_command_parent_class = NULL;
+static gpointer set_key_photo_command_parent_class = NULL;
+static gpointer revert_single_command_parent_class = NULL;
+static gpointer revert_multiple_command_parent_class = NULL;
+static gpointer enhance_single_command_parent_class = NULL;
+static gpointer enhance_multiple_command_parent_class = NULL;
+static gpointer straighten_command_parent_class = NULL;
+static gpointer crop_command_parent_class = NULL;
+static gpointer adjust_colors_single_command_parent_class = NULL;
+static gpointer adjust_colors_multiple_command_parent_class = NULL;
+static gpointer redeye_command_parent_class = NULL;
+static gpointer move_photos_command_parent_class = NULL;
+static gpointer move_photos_command_real_move_photos_command_parent_class = NULL;
+static gpointer new_event_command_parent_class = NULL;
+static gpointer set_event_command_parent_class = NULL;
+static gpointer merge_events_command_parent_class = NULL;
+static gpointer duplicate_multiple_photos_command_parent_class = NULL;
+extern LibraryPhotoSourceCollection* library_photo_global;
+static gpointer set_rating_single_command_parent_class = NULL;
+static gpointer set_rating_command_parent_class = NULL;
+static gpointer set_raw_developer_command_parent_class = NULL;
+static gpointer adjust_date_time_photo_command_parent_class = NULL;
+extern EventSourceCollection* event_global;
+static gpointer adjust_date_time_photos_command_parent_class = NULL;
+static gpointer add_tags_command_parent_class = NULL;
+extern VideoSourceCollection* video_global;
+static gpointer rename_tag_command_parent_class = NULL;
+static gpointer delete_tag_command_parent_class = NULL;
+extern TagSourceCollection* tag_global;
+static gpointer new_child_tag_command_parent_class = NULL;
+static gpointer new_root_tag_command_parent_class = NULL;
+static gpointer reparent_tag_command_parent_class = NULL;
+static gpointer modify_tags_command_parent_class = NULL;
+static gpointer tag_untag_photos_command_parent_class = NULL;
+static gpointer rename_saved_search_command_parent_class = NULL;
+static gpointer delete_saved_search_command_parent_class = NULL;
+static gpointer trash_untrash_photos_command_parent_class = NULL;
+static gpointer flag_unflag_command_parent_class = NULL;
+
+GType command_description_get_type (void) G_GNUC_CONST;
+GType command_get_type (void) G_GNUC_CONST;
+GType page_command_get_type (void) G_GNUC_CONST;
+GType page_get_type (void) G_GNUC_CONST;
+GType data_object_get_type (void) G_GNUC_CONST;
+GType data_source_get_type (void) G_GNUC_CONST;
+GType thumbnail_source_get_type (void) G_GNUC_CONST;
+GType media_source_get_type (void) G_GNUC_CONST;
+GType photo_source_get_type (void) G_GNUC_CONST;
+GType photo_get_type (void) G_GNUC_CONST;
+GType checkerboard_page_get_type (void) G_GNUC_CONST;
+GType media_page_get_type (void) G_GNUC_CONST;
+GType collection_page_get_type (void) G_GNUC_CONST;
+#define PAGE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PAGE_COMMAND, PageCommandPrivate))
+enum {
+ PAGE_COMMAND_DUMMY_PROPERTY
+};
+static void page_command_on_page_destroyed (PageCommand* self);
+static void _page_command_on_page_destroyed_gtk_widget_destroy (GtkWidget* _sender, gpointer self);
+static void page_command_on_photo_destroyed (PageCommand* self);
+static void _page_command_on_photo_destroyed_data_source_destroyed (DataSource* _sender, gpointer self);
+static void page_command_on_controller_destroyed (PageCommand* self);
+static void _page_command_on_controller_destroyed_gtk_widget_destroy (GtkWidget* _sender, gpointer self);
+PageCommand* page_command_construct (GType object_type, const gchar* name, const gchar* explanation);
+Command* command_construct (GType object_type, const gchar* name, const gchar* explanation);
+GType page_window_get_type (void) G_GNUC_CONST;
+GType app_window_get_type (void) G_GNUC_CONST;
+AppWindow* app_window_get_instance (void);
+Page* page_window_get_current_page (PageWindow* self);
+GType single_photo_page_get_type (void) G_GNUC_CONST;
+GType editing_host_page_get_type (void) G_GNUC_CONST;
+GType library_photo_page_get_type (void) G_GNUC_CONST;
+Photo* editing_host_page_get_photo (EditingHostPage* self);
+CollectionPage* library_photo_page_get_controller_page (LibraryPhotoPage* self);
+void page_command_set_auto_return_to_page (PageCommand* self, gboolean auto_return);
+static void page_command_real_prepare (Command* base);
+void page_command_return_to_page (PageCommand* self);
+void command_prepare (Command* self);
+gpointer data_collection_ref (gpointer instance);
+void data_collection_unref (gpointer instance);
+GParamSpec* param_spec_data_collection (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void value_set_data_collection (GValue* value, gpointer v_object);
+void value_take_data_collection (GValue* value, gpointer v_object);
+gpointer value_get_data_collection (const GValue* value);
+GType data_collection_get_type (void) G_GNUC_CONST;
+GType view_collection_get_type (void) G_GNUC_CONST;
+ViewCollection* page_get_view (Page* self);
+gint data_collection_get_count (DataCollection* self);
+DataObject* data_collection_get_at (DataCollection* self, gint index);
+GType data_view_get_type (void) G_GNUC_CONST;
+GType thumbnail_view_get_type (void) G_GNUC_CONST;
+GType checkerboard_item_get_type (void) G_GNUC_CONST;
+GType media_source_item_get_type (void) G_GNUC_CONST;
+GType thumbnail_get_type (void) G_GNUC_CONST;
+MediaSource* thumbnail_get_media_source (Thumbnail* self);
+GType library_window_get_type (void) G_GNUC_CONST;
+LibraryWindow* library_window_get_app (void);
+void library_window_switch_to_photo_page (LibraryWindow* self, CollectionPage* controller, Photo* current);
+void page_window_set_current_page (PageWindow* self, Page* page);
+static void page_command_finalize (GObject* obj);
+GType single_data_source_command_get_type (void) G_GNUC_CONST;
+enum {
+ SINGLE_DATA_SOURCE_COMMAND_DUMMY_PROPERTY
+};
+static void single_data_source_command_on_source_destroyed (SingleDataSourceCommand* self);
+static void _single_data_source_command_on_source_destroyed_data_source_destroyed (DataSource* _sender, gpointer self);
+SingleDataSourceCommand* single_data_source_command_construct (GType object_type, DataSource* source, const gchar* name, const gchar* explanation);
+DataSource* single_data_source_command_get_source (SingleDataSourceCommand* self);
+gpointer command_manager_ref (gpointer instance);
+void command_manager_unref (gpointer instance);
+GParamSpec* param_spec_command_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void value_set_command_manager (GValue* value, gpointer v_object);
+void value_take_command_manager (GValue* value, gpointer v_object);
+gpointer value_get_command_manager (const GValue* value);
+GType command_manager_get_type (void) G_GNUC_CONST;
+CommandManager* command_get_command_manager (Command* self);
+void command_manager_reset (CommandManager* self);
+static void single_data_source_command_finalize (GObject* obj);
+GType simple_proxyable_command_get_type (void) G_GNUC_CONST;
+gpointer source_proxy_ref (gpointer instance);
+void source_proxy_unref (gpointer instance);
+GParamSpec* param_spec_source_proxy (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void value_set_source_proxy (GValue* value, gpointer v_object);
+void value_take_source_proxy (GValue* value, gpointer v_object);
+gpointer value_get_source_proxy (const GValue* value);
+GType source_proxy_get_type (void) G_GNUC_CONST;
+#define SIMPLE_PROXYABLE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SIMPLE_PROXYABLE_COMMAND, SimpleProxyableCommandPrivate))
+enum {
+ SIMPLE_PROXYABLE_COMMAND_DUMMY_PROPERTY
+};
+static void simple_proxyable_command_on_proxy_broken (SimpleProxyableCommand* self);
+static void _simple_proxyable_command_on_proxy_broken_source_proxy_broken (SourceProxy* _sender, gpointer self);
+void simple_proxyable_command_clear_added_proxies (SimpleProxyableCommand* self);
+GType proxyable_get_type (void) G_GNUC_CONST;
+SimpleProxyableCommand* simple_proxyable_command_construct (GType object_type, Proxyable* proxyable, const gchar* name, const gchar* explanation);
+SourceProxy* proxyable_get_proxy (Proxyable* self);
+static void simple_proxyable_command_real_execute (Command* base);
+void simple_proxyable_command_execute_on_source (SimpleProxyableCommand* self, DataSource* source);
+DataSource* source_proxy_get_source (SourceProxy* self);
+static void simple_proxyable_command_real_execute_on_source (SimpleProxyableCommand* self, DataSource* source);
+static void simple_proxyable_command_real_undo (Command* base);
+void simple_proxyable_command_undo_on_source (SimpleProxyableCommand* self, DataSource* source);
+static void simple_proxyable_command_real_undo_on_source (SimpleProxyableCommand* self, DataSource* source);
+void simple_proxyable_command_add_proxyables (SimpleProxyableCommand* self, GeeCollection* proxyables);
+static void simple_proxyable_command_finalize (GObject* obj);
+GType single_photo_transformation_command_get_type (void) G_GNUC_CONST;
+GType photo_transformation_state_get_type (void) G_GNUC_CONST;
+#define SINGLE_PHOTO_TRANSFORMATION_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SINGLE_PHOTO_TRANSFORMATION_COMMAND, SinglePhotoTransformationCommandPrivate))
+enum {
+ SINGLE_PHOTO_TRANSFORMATION_COMMAND_DUMMY_PROPERTY
+};
+static void single_photo_transformation_command_on_state_broken (SinglePhotoTransformationCommand* self);
+static void _single_photo_transformation_command_on_state_broken_photo_transformation_state_broken (PhotoTransformationState* _sender, gpointer self);
+SinglePhotoTransformationCommand* single_photo_transformation_command_construct (GType object_type, Photo* photo, const gchar* name, const gchar* explanation);
+PhotoTransformationState* photo_save_transformation_state (Photo* self);
+static void single_photo_transformation_command_real_undo (Command* base);
+gboolean photo_load_transformation_state (Photo* self, PhotoTransformationState* state);
+static void single_photo_transformation_command_finalize (GObject* obj);
+GType generic_photo_transformation_command_get_type (void) G_GNUC_CONST;
+#define GENERIC_PHOTO_TRANSFORMATION_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, GenericPhotoTransformationCommandPrivate))
+enum {
+ GENERIC_PHOTO_TRANSFORMATION_COMMAND_DUMMY_PROPERTY
+};
+static void generic_photo_transformation_command_on_state_broken (GenericPhotoTransformationCommand* self);
+static void _generic_photo_transformation_command_on_state_broken_photo_transformation_state_broken (PhotoTransformationState* _sender, gpointer self);
+GenericPhotoTransformationCommand* generic_photo_transformation_command_construct (GType object_type, Photo* photo, const gchar* name, const gchar* explanation);
+static void generic_photo_transformation_command_real_execute (Command* base);
+void generic_photo_transformation_command_execute_on_photo (GenericPhotoTransformationCommand* self, Photo* photo);
+static void generic_photo_transformation_command_real_execute_on_photo (GenericPhotoTransformationCommand* self, Photo* photo);
+static void generic_photo_transformation_command_real_undo (Command* base);
+static void generic_photo_transformation_command_real_redo (Command* base);
+gboolean generic_photo_transformation_command_can_compress (GenericPhotoTransformationCommand* self, Command* command);
+static gboolean generic_photo_transformation_command_real_can_compress (GenericPhotoTransformationCommand* self, Command* command);
+static gboolean generic_photo_transformation_command_real_compress (Command* base, Command* command);
+void command_execute (Command* self);
+static void generic_photo_transformation_command_finalize (GObject* obj);
+GType multiple_data_source_command_get_type (void) G_GNUC_CONST;
+GType source_collection_get_type (void) G_GNUC_CONST;
+#define MULTIPLE_DATA_SOURCE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommandPrivate))
+enum {
+ MULTIPLE_DATA_SOURCE_COMMAND_DUMMY_PROPERTY
+};
+static void multiple_data_source_command_on_source_destroyed (MultipleDataSourceCommand* self, DataSource* source);
+static void _multiple_data_source_command_on_source_destroyed_source_collection_item_destroyed (SourceCollection* _sender, DataSource* source, gpointer self);
+#define MULTIPLE_DATA_SOURCE_COMMAND_MIN_OPS_FOR_PROGRESS_WINDOW 5
+MultipleDataSourceCommand* multiple_data_source_command_construct (GType object_type, GeeIterable* iter, const gchar* progress_text, const gchar* undo_progress_text, const gchar* name, const gchar* explanation);
+DataSource* data_view_get_source (DataView* self);
+DataCollection* data_object_get_membership (DataObject* self);
+GeeIterable* multiple_data_source_command_get_sources (MultipleDataSourceCommand* self);
+gint multiple_data_source_command_get_source_count (MultipleDataSourceCommand* self);
+static void multiple_data_source_command_real_execute (Command* base);
+static void multiple_data_source_command_start_transaction (MultipleDataSourceCommand* self);
+static void multiple_data_source_command_execute_all (MultipleDataSourceCommand* self, gboolean exec, gboolean can_cancel, GeeArrayList* todo, GeeArrayList* completed);
+static void multiple_data_source_command_commit_transaction (MultipleDataSourceCommand* self);
+void multiple_data_source_command_execute_on_source (MultipleDataSourceCommand* self, DataSource* source);
+static void multiple_data_source_command_real_execute_on_source (MultipleDataSourceCommand* self, DataSource* source);
+static void multiple_data_source_command_real_undo (Command* base);
+void multiple_data_source_command_undo_on_source (MultipleDataSourceCommand* self, DataSource* source);
+static void multiple_data_source_command_real_undo_on_source (MultipleDataSourceCommand* self, DataSource* source);
+GType database_source_collection_get_type (void) G_GNUC_CONST;
+GType media_source_collection_get_type (void) G_GNUC_CONST;
+gpointer transaction_controller_ref (gpointer instance);
+void transaction_controller_unref (gpointer instance);
+GParamSpec* param_spec_transaction_controller (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void value_set_transaction_controller (GValue* value, gpointer v_object);
+void value_take_transaction_controller (GValue* value, gpointer v_object);
+gpointer value_get_transaction_controller (const GValue* value);
+GType transaction_controller_get_type (void) G_GNUC_CONST;
+TransactionController* media_source_collection_get_transaction_controller (MediaSourceCollection* self);
+void transaction_controller_begin (TransactionController* self);
+void transaction_controller_commit (TransactionController* self);
+void page_window_set_busy_cursor (PageWindow* self);
+GType progress_dialog_get_type (void) G_GNUC_CONST;
+ProgressDialog* progress_dialog_new (GtkWindow* owner, const gchar* text, GCancellable* cancellable);
+ProgressDialog* progress_dialog_construct (GType object_type, GtkWindow* owner, const gchar* text, GCancellable* cancellable);
+void progress_dialog_set_fraction (ProgressDialog* self, gint current, gint total);
+void spin_event_loop (void);
+void progress_dialog_close (ProgressDialog* self);
+void page_window_set_normal_cursor (PageWindow* self);
+static void multiple_data_source_command_finalize (GObject* obj);
+GType multiple_data_source_at_once_command_get_type (void) G_GNUC_CONST;
+#define MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND, MultipleDataSourceAtOnceCommandPrivate))
+enum {
+ MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND_DUMMY_PROPERTY
+};
+static void multiple_data_source_at_once_command_on_sources_destroyed (MultipleDataSourceAtOnceCommand* self, GeeCollection* destroyed);
+static void _multiple_data_source_at_once_command_on_sources_destroyed_source_collection_items_destroyed (SourceCollection* _sender, GeeCollection* destroyed, gpointer self);
+MultipleDataSourceAtOnceCommand* multiple_data_source_at_once_command_construct (GType object_type, GeeCollection* sources, const gchar* name, const gchar* explanation);
+static void multiple_data_source_at_once_command_real_execute (Command* base);
+void database_table_begin_transaction (void);
+gpointer media_collection_registry_ref (gpointer instance);
+void media_collection_registry_unref (gpointer instance);
+GParamSpec* param_spec_media_collection_registry (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void value_set_media_collection_registry (GValue* value, gpointer v_object);
+void value_take_media_collection_registry (GValue* value, gpointer v_object);
+gpointer value_get_media_collection_registry (const GValue* value);
+GType media_collection_registry_get_type (void) G_GNUC_CONST;
+MediaCollectionRegistry* media_collection_registry_get_instance (void);
+void media_collection_registry_freeze_all (MediaCollectionRegistry* self);
+void multiple_data_source_at_once_command_execute_on_all (MultipleDataSourceAtOnceCommand* self, GeeCollection* sources);
+void media_collection_registry_thaw_all (MediaCollectionRegistry* self);
+GQuark database_error_quark (void);
+void database_table_commit_transaction (GError** error);
+void app_window_database_error (GError* err);
+static void multiple_data_source_at_once_command_real_execute_on_all (MultipleDataSourceAtOnceCommand* self, GeeCollection* sources);
+static void multiple_data_source_at_once_command_real_undo (Command* base);
+void multiple_data_source_at_once_command_undo_on_all (MultipleDataSourceAtOnceCommand* self, GeeCollection* sources);
+static void multiple_data_source_at_once_command_real_undo_on_all (MultipleDataSourceAtOnceCommand* self, GeeCollection* sources);
+static void multiple_data_source_at_once_command_finalize (GObject* obj);
+GType multiple_photo_transformation_command_get_type (void) G_GNUC_CONST;
+#define MULTIPLE_PHOTO_TRANSFORMATION_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND, MultiplePhotoTransformationCommandPrivate))
+enum {
+ MULTIPLE_PHOTO_TRANSFORMATION_COMMAND_DUMMY_PROPERTY
+};
+static void multiple_photo_transformation_command_on_state_broken (MultiplePhotoTransformationCommand* self);
+static void _multiple_photo_transformation_command_on_state_broken_photo_transformation_state_broken (PhotoTransformationState* _sender, gpointer self);
+MultiplePhotoTransformationCommand* multiple_photo_transformation_command_construct (GType object_type, GeeIterable* iter, const gchar* progress_text, const gchar* undo_progress_text, const gchar* name, const gchar* explanation);
+static void multiple_photo_transformation_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source);
+static void multiple_photo_transformation_command_finalize (GObject* obj);
+GType rotate_single_command_get_type (void) G_GNUC_CONST;
+GType rotation_get_type (void) G_GNUC_CONST;
+#define ROTATE_SINGLE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ROTATE_SINGLE_COMMAND, RotateSingleCommandPrivate))
+enum {
+ ROTATE_SINGLE_COMMAND_DUMMY_PROPERTY
+};
+RotateSingleCommand* rotate_single_command_new (Photo* photo, Rotation rotation, const gchar* name, const gchar* explanation);
+RotateSingleCommand* rotate_single_command_construct (GType object_type, Photo* photo, Rotation rotation, const gchar* name, const gchar* explanation);
+static void rotate_single_command_real_execute (Command* base);
+void photo_rotate (Photo* self, Rotation rotation);
+static void rotate_single_command_real_undo (Command* base);
+Rotation rotation_opposite (Rotation self);
+static void rotate_single_command_finalize (GObject* obj);
+GType rotate_multiple_command_get_type (void) G_GNUC_CONST;
+#define ROTATE_MULTIPLE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ROTATE_MULTIPLE_COMMAND, RotateMultipleCommandPrivate))
+enum {
+ ROTATE_MULTIPLE_COMMAND_DUMMY_PROPERTY
+};
+RotateMultipleCommand* rotate_multiple_command_new (GeeIterable* iter, Rotation rotation, const gchar* name, const gchar* explanation, const gchar* progress_text, const gchar* undo_progress_text);
+RotateMultipleCommand* rotate_multiple_command_construct (GType object_type, GeeIterable* iter, Rotation rotation, const gchar* name, const gchar* explanation, const gchar* progress_text, const gchar* undo_progress_text);
+static void rotate_multiple_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source);
+static void rotate_multiple_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source);
+static void rotate_multiple_command_finalize (GObject* obj);
+GType edit_title_command_get_type (void) G_GNUC_CONST;
+#define EDIT_TITLE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_EDIT_TITLE_COMMAND, EditTitleCommandPrivate))
+enum {
+ EDIT_TITLE_COMMAND_DUMMY_PROPERTY
+};
+EditTitleCommand* edit_title_command_new (MediaSource* source, const gchar* new_title);
+EditTitleCommand* edit_title_command_construct (GType object_type, MediaSource* source, const gchar* new_title);
+#define RESOURCES_EDIT_TITLE_LABEL "Edit Title"
+gchar* media_source_get_title (MediaSource* self);
+static void edit_title_command_real_execute (Command* base);
+void media_source_set_title (MediaSource* self, const gchar* title);
+static void edit_title_command_real_undo (Command* base);
+static void edit_title_command_finalize (GObject* obj);
+GType edit_comment_command_get_type (void) G_GNUC_CONST;
+#define EDIT_COMMENT_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_EDIT_COMMENT_COMMAND, EditCommentCommandPrivate))
+enum {
+ EDIT_COMMENT_COMMAND_DUMMY_PROPERTY
+};
+EditCommentCommand* edit_comment_command_new (MediaSource* source, const gchar* new_comment);
+EditCommentCommand* edit_comment_command_construct (GType object_type, MediaSource* source, const gchar* new_comment);
+#define RESOURCES_EDIT_COMMENT_LABEL _ ("Edit Comment")
+gchar* media_source_get_comment (MediaSource* self);
+static void edit_comment_command_real_execute (Command* base);
+gboolean media_source_set_comment (MediaSource* self, const gchar* comment);
+static void edit_comment_command_real_undo (Command* base);
+static void edit_comment_command_finalize (GObject* obj);
+GType edit_multiple_titles_command_get_type (void) G_GNUC_CONST;
+enum {
+ EDIT_MULTIPLE_TITLES_COMMAND_DUMMY_PROPERTY
+};
+EditMultipleTitlesCommand* edit_multiple_titles_command_new (GeeCollection* media_sources, const gchar* new_title);
+EditMultipleTitlesCommand* edit_multiple_titles_command_construct (GType object_type, GeeCollection* media_sources, const gchar* new_title);
+static void edit_multiple_titles_command_real_execute_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources);
+static void edit_multiple_titles_command_real_undo_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources);
+static void edit_multiple_titles_command_finalize (GObject* obj);
+GType edit_multiple_comments_command_get_type (void) G_GNUC_CONST;
+enum {
+ EDIT_MULTIPLE_COMMENTS_COMMAND_DUMMY_PROPERTY
+};
+EditMultipleCommentsCommand* edit_multiple_comments_command_new (GeeCollection* media_sources, const gchar* new_comment);
+EditMultipleCommentsCommand* edit_multiple_comments_command_construct (GType object_type, GeeCollection* media_sources, const gchar* new_comment);
+static void edit_multiple_comments_command_real_execute_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources);
+static void edit_multiple_comments_command_real_undo_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources);
+static void edit_multiple_comments_command_finalize (GObject* obj);
+GType rename_event_command_get_type (void) G_GNUC_CONST;
+#define RENAME_EVENT_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_RENAME_EVENT_COMMAND, RenameEventCommandPrivate))
+enum {
+ RENAME_EVENT_COMMAND_DUMMY_PROPERTY
+};
+GType event_source_get_type (void) G_GNUC_CONST;
+GType event_get_type (void) G_GNUC_CONST;
+RenameEventCommand* rename_event_command_new (Event* event, const gchar* new_name);
+RenameEventCommand* rename_event_command_construct (GType object_type, Event* event, const gchar* new_name);
+#define RESOURCES_RENAME_EVENT_LABEL _ ("Rename Event")
+gchar* event_get_raw_name (Event* self);
+static void rename_event_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source);
+gboolean event_rename (Event* self, const gchar* name);
+static void rename_event_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source);
+static void rename_event_command_finalize (GObject* obj);
+GType edit_event_comment_command_get_type (void) G_GNUC_CONST;
+#define EDIT_EVENT_COMMENT_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_EDIT_EVENT_COMMENT_COMMAND, EditEventCommentCommandPrivate))
+enum {
+ EDIT_EVENT_COMMENT_COMMAND_DUMMY_PROPERTY
+};
+EditEventCommentCommand* edit_event_comment_command_new (Event* event, const gchar* new_comment);
+EditEventCommentCommand* edit_event_comment_command_construct (GType object_type, Event* event, const gchar* new_comment);
+gchar* event_source_get_comment (EventSource* self);
+static void edit_event_comment_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source);
+gboolean event_source_set_comment (EventSource* self, const gchar* comment);
+static void edit_event_comment_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source);
+static void edit_event_comment_command_finalize (GObject* obj);
+GType set_key_photo_command_get_type (void) G_GNUC_CONST;
+#define SET_KEY_PHOTO_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SET_KEY_PHOTO_COMMAND, SetKeyPhotoCommandPrivate))
+enum {
+ SET_KEY_PHOTO_COMMAND_DUMMY_PROPERTY
+};
+SetKeyPhotoCommand* set_key_photo_command_new (Event* event, MediaSource* new_primary_source);
+SetKeyPhotoCommand* set_key_photo_command_construct (GType object_type, Event* event, MediaSource* new_primary_source);
+#define RESOURCES_MAKE_KEY_PHOTO_LABEL _ ("Make Key Photo for Event")
+MediaSource* event_get_primary_source (Event* self);
+static void set_key_photo_command_real_execute (Command* base);
+gboolean event_set_primary_source (Event* self, MediaSource* source);
+static void set_key_photo_command_real_undo (Command* base);
+static void set_key_photo_command_finalize (GObject* obj);
+GType revert_single_command_get_type (void) G_GNUC_CONST;
+enum {
+ REVERT_SINGLE_COMMAND_DUMMY_PROPERTY
+};
+RevertSingleCommand* revert_single_command_new (Photo* photo);
+RevertSingleCommand* revert_single_command_construct (GType object_type, Photo* photo);
+#define RESOURCES_REVERT_LABEL _ ("Revert to Original")
+static void revert_single_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo);
+void photo_remove_all_transformations (Photo* self);
+static gboolean revert_single_command_real_compress (Command* base, Command* command);
+GType revert_multiple_command_get_type (void) G_GNUC_CONST;
+enum {
+ REVERT_MULTIPLE_COMMAND_DUMMY_PROPERTY
+};
+RevertMultipleCommand* revert_multiple_command_new (GeeIterable* iter);
+RevertMultipleCommand* revert_multiple_command_construct (GType object_type, GeeIterable* iter);
+static void revert_multiple_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source);
+GType enhance_single_command_get_type (void) G_GNUC_CONST;
+enum {
+ ENHANCE_SINGLE_COMMAND_DUMMY_PROPERTY
+};
+EnhanceSingleCommand* enhance_single_command_new (Photo* photo);
+EnhanceSingleCommand* enhance_single_command_construct (GType object_type, Photo* photo);
+#define RESOURCES_ENHANCE_LABEL _ ("Enhance")
+#define RESOURCES_ENHANCE_TOOLTIP _ ("Automatically improve the photo's appearance")
+static void enhance_single_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo);
+gboolean photo_enhance (Photo* self);
+static gboolean enhance_single_command_real_compress (Command* base, Command* command);
+GType enhance_multiple_command_get_type (void) G_GNUC_CONST;
+enum {
+ ENHANCE_MULTIPLE_COMMAND_DUMMY_PROPERTY
+};
+EnhanceMultipleCommand* enhance_multiple_command_new (GeeIterable* iter);
+EnhanceMultipleCommand* enhance_multiple_command_construct (GType object_type, GeeIterable* iter);
+static void enhance_multiple_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source);
+GType straighten_command_get_type (void) G_GNUC_CONST;
+GType box_get_type (void) G_GNUC_CONST;
+Box* box_dup (const Box* self);
+void box_free (Box* self);
+#define STRAIGHTEN_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_STRAIGHTEN_COMMAND, StraightenCommandPrivate))
+enum {
+ STRAIGHTEN_COMMAND_DUMMY_PROPERTY
+};
+StraightenCommand* straighten_command_new (Photo* photo, gdouble theta, Box* crop, const gchar* name, const gchar* explanation);
+StraightenCommand* straighten_command_construct (GType object_type, Photo* photo, gdouble theta, Box* crop, const gchar* name, const gchar* explanation);
+static void straighten_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo);
+void data_collection_freeze_notifications (DataCollection* self);
+void photo_set_straighten (Photo* self, gdouble theta);
+void photo_set_crop (Photo* self, Box* crop);
+void data_collection_thaw_notifications (DataCollection* self);
+static void straighten_command_finalize (GObject* obj);
+GType crop_command_get_type (void) G_GNUC_CONST;
+#define CROP_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_CROP_COMMAND, CropCommandPrivate))
+enum {
+ CROP_COMMAND_DUMMY_PROPERTY
+};
+CropCommand* crop_command_new (Photo* photo, Box* crop, const gchar* name, const gchar* explanation);
+CropCommand* crop_command_construct (GType object_type, Photo* photo, Box* crop, const gchar* name, const gchar* explanation);
+static void crop_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo);
+static void crop_command_finalize (GObject* obj);
+GType adjust_colors_single_command_get_type (void) G_GNUC_CONST;
+gpointer pixel_transformation_bundle_ref (gpointer instance);
+void pixel_transformation_bundle_unref (gpointer instance);
+GParamSpec* param_spec_pixel_transformation_bundle (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void value_set_pixel_transformation_bundle (GValue* value, gpointer v_object);
+void value_take_pixel_transformation_bundle (GValue* value, gpointer v_object);
+gpointer value_get_pixel_transformation_bundle (const GValue* value);
+GType pixel_transformation_bundle_get_type (void) G_GNUC_CONST;
+#define ADJUST_COLORS_SINGLE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ADJUST_COLORS_SINGLE_COMMAND, AdjustColorsSingleCommandPrivate))
+enum {
+ ADJUST_COLORS_SINGLE_COMMAND_DUMMY_PROPERTY
+};
+AdjustColorsSingleCommand* adjust_colors_single_command_new (Photo* photo, PixelTransformationBundle* transformations, const gchar* name, const gchar* explanation);
+AdjustColorsSingleCommand* adjust_colors_single_command_construct (GType object_type, Photo* photo, PixelTransformationBundle* transformations, const gchar* name, const gchar* explanation);
+static void adjust_colors_single_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo);
+void photo_set_color_adjustments (Photo* self, PixelTransformationBundle* new_adjustments);
+static gboolean adjust_colors_single_command_real_can_compress (GenericPhotoTransformationCommand* base, Command* command);
+static void adjust_colors_single_command_finalize (GObject* obj);
+GType adjust_colors_multiple_command_get_type (void) G_GNUC_CONST;
+#define ADJUST_COLORS_MULTIPLE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ADJUST_COLORS_MULTIPLE_COMMAND, AdjustColorsMultipleCommandPrivate))
+enum {
+ ADJUST_COLORS_MULTIPLE_COMMAND_DUMMY_PROPERTY
+};
+AdjustColorsMultipleCommand* adjust_colors_multiple_command_new (GeeIterable* iter, PixelTransformationBundle* transformations, const gchar* name, const gchar* explanation);
+AdjustColorsMultipleCommand* adjust_colors_multiple_command_construct (GType object_type, GeeIterable* iter, PixelTransformationBundle* transformations, const gchar* name, const gchar* explanation);
+static void adjust_colors_multiple_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source);
+static void adjust_colors_multiple_command_finalize (GObject* obj);
+GType redeye_command_get_type (void) G_GNUC_CONST;
+GType editing_tools_redeye_instance_get_type (void) G_GNUC_CONST;
+EditingToolsRedeyeInstance* editing_tools_redeye_instance_dup (const EditingToolsRedeyeInstance* self);
+void editing_tools_redeye_instance_free (EditingToolsRedeyeInstance* self);
+#define REDEYE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_REDEYE_COMMAND, RedeyeCommandPrivate))
+enum {
+ REDEYE_COMMAND_DUMMY_PROPERTY
+};
+RedeyeCommand* redeye_command_new (Photo* photo, EditingToolsRedeyeInstance* redeye_instance, const gchar* name, const gchar* explanation);
+RedeyeCommand* redeye_command_construct (GType object_type, Photo* photo, EditingToolsRedeyeInstance* redeye_instance, const gchar* name, const gchar* explanation);
+static void redeye_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo);
+void photo_add_redeye_instance (Photo* self, EditingToolsRedeyeInstance* redeye);
+static void redeye_command_finalize (GObject* obj);
+GType move_photos_command_get_type (void) G_GNUC_CONST;
+GType move_photos_command_real_move_photos_command_get_type (void) G_GNUC_CONST;
+enum {
+ MOVE_PHOTOS_COMMAND_DUMMY_PROPERTY
+};
+MovePhotosCommand* move_photos_command_construct (GType object_type, const gchar* name, const gchar* explanation);
+static void move_photos_command_real_prepare (Command* base);
+static void move_photos_command_real_execute (Command* base);
+static void move_photos_command_real_undo (Command* base);
+void command_undo (Command* self);
+#define MOVE_PHOTOS_COMMAND_REAL_MOVE_PHOTOS_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND, MovePhotosCommandRealMovePhotosCommandPrivate))
+enum {
+ MOVE_PHOTOS_COMMAND_REAL_MOVE_PHOTOS_COMMAND_DUMMY_PROPERTY
+};
+static void move_photos_command_real_move_photos_command_on_proxy_broken (MovePhotosCommandRealMovePhotosCommand* self);
+static void _move_photos_command_real_move_photos_command_on_proxy_broken_source_proxy_broken (SourceProxy* _sender, gpointer self);
+MovePhotosCommandRealMovePhotosCommand* move_photos_command_real_move_photos_command_new (Event* new_event, GeeIterable* source_views, const gchar* progress_text, const gchar* undo_progress_text, const gchar* name, const gchar* explanation);
+MovePhotosCommandRealMovePhotosCommand* move_photos_command_real_move_photos_command_construct (GType object_type, Event* new_event, GeeIterable* source_views, const gchar* progress_text, const gchar* undo_progress_text, const gchar* name, const gchar* explanation);
+Event* media_source_get_event (MediaSource* self);
+static void move_photos_command_real_move_photos_command_real_execute (Command* base);
+GType event_page_get_type (void) G_GNUC_CONST;
+Event* event_page_get_event (EventPage* self);
+gint event_source_get_media_count (EventSource* self);
+void library_window_switch_to_event (LibraryWindow* self, Event* event);
+static void move_photos_command_real_move_photos_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source);
+gboolean media_source_set_event (MediaSource* self, Event* new_event);
+static void move_photos_command_real_move_photos_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source);
+static void move_photos_command_real_move_photos_command_finalize (GObject* obj);
+static void move_photos_command_finalize (GObject* obj);
+GType new_event_command_get_type (void) G_GNUC_CONST;
+enum {
+ NEW_EVENT_COMMAND_DUMMY_PROPERTY
+};
+NewEventCommand* new_event_command_new (GeeIterable* iter);
+NewEventCommand* new_event_command_construct (GType object_type, GeeIterable* iter);
+#define RESOURCES_NEW_EVENT_LABEL _ ("New Event")
+Event* event_create_empty_event (MediaSource* source);
+GType set_event_command_get_type (void) G_GNUC_CONST;
+enum {
+ SET_EVENT_COMMAND_DUMMY_PROPERTY
+};
+SetEventCommand* set_event_command_new (GeeIterable* iter, Event* new_event);
+SetEventCommand* set_event_command_construct (GType object_type, GeeIterable* iter, Event* new_event);
+#define RESOURCES_SET_PHOTO_EVENT_LABEL _ ("Move Photos")
+#define RESOURCES_SET_PHOTO_EVENT_TOOLTIP _ ("Move photos to an event")
+GType merge_events_command_get_type (void) G_GNUC_CONST;
+enum {
+ MERGE_EVENTS_COMMAND_DUMMY_PROPERTY
+};
+MergeEventsCommand* merge_events_command_new (GeeIterable* iter);
+MergeEventsCommand* merge_events_command_construct (GType object_type, GeeIterable* iter);
+#define RESOURCES_MERGE_LABEL _ ("Merge")
+gboolean event_has_name (Event* self);
+GeeCollection* event_source_get_media (EventSource* self);
+ThumbnailView* thumbnail_view_new (ThumbnailSource* source);
+ThumbnailView* thumbnail_view_construct (GType object_type, ThumbnailSource* source);
+GType duplicate_multiple_photos_command_get_type (void) G_GNUC_CONST;
+GType library_photo_get_type (void) G_GNUC_CONST;
+#define DUPLICATE_MULTIPLE_PHOTOS_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND, DuplicateMultiplePhotosCommandPrivate))
+enum {
+ DUPLICATE_MULTIPLE_PHOTOS_COMMAND_DUMMY_PROPERTY
+};
+GType library_photo_source_collection_get_type (void) G_GNUC_CONST;
+static void duplicate_multiple_photos_command_on_photo_destroyed (DuplicateMultiplePhotosCommand* self, DataSource* source);
+static void _duplicate_multiple_photos_command_on_photo_destroyed_source_collection_item_destroyed (SourceCollection* _sender, DataSource* source, gpointer self);
+DuplicateMultiplePhotosCommand* duplicate_multiple_photos_command_new (GeeIterable* iter);
+DuplicateMultiplePhotosCommand* duplicate_multiple_photos_command_construct (GType object_type, GeeIterable* iter);
+#define RESOURCES_DUPLICATE_PHOTO_LABEL _ ("Duplicate")
+#define RESOURCES_DUPLICATE_PHOTO_TOOLTIP _ ("Make a duplicate of the photo")
+static void duplicate_multiple_photos_command_real_execute (Command* base);
+void app_window_error_message (const gchar* message, GtkWindow* parent);
+static void duplicate_multiple_photos_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source);
+LibraryPhoto* library_photo_duplicate (LibraryPhoto* self, GError** error);
+GFile* media_source_get_file (MediaSource* self);
+static void duplicate_multiple_photos_command_real_undo (Command* base);
+static void duplicate_multiple_photos_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source);
+GType marker_get_type (void) G_GNUC_CONST;
+Marker* data_collection_mark (DataCollection* self, DataObject* object);
+gint source_collection_destroy_marked (SourceCollection* self, Marker* marker, gboolean delete_backing, ProgressMonitor monitor, void* monitor_target, GeeList* not_removed);
+static void duplicate_multiple_photos_command_finalize (GObject* obj);
+GType set_rating_single_command_get_type (void) G_GNUC_CONST;
+GType rating_get_type (void) G_GNUC_CONST;
+#define SET_RATING_SINGLE_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SET_RATING_SINGLE_COMMAND, SetRatingSingleCommandPrivate))
+enum {
+ SET_RATING_SINGLE_COMMAND_DUMMY_PROPERTY
+};
+SetRatingSingleCommand* set_rating_single_command_new (DataSource* source, Rating rating);
+SetRatingSingleCommand* set_rating_single_command_construct (GType object_type, DataSource* source, Rating rating);
+const gchar* resources_rating_label (Rating rating);
+Rating media_source_get_rating (MediaSource* self);
+SetRatingSingleCommand* set_rating_single_command_new_inc_dec (DataSource* source, gboolean is_incrementing);
+SetRatingSingleCommand* set_rating_single_command_construct_inc_dec (GType object_type, DataSource* source, gboolean is_incrementing);
+#define RESOURCES_INCREASE_RATING_LABEL _ ("Increase Rating")
+#define RESOURCES_DECREASE_RATING_LABEL _ ("Decrease Rating")
+static void set_rating_single_command_real_execute (Command* base);
+void media_source_set_rating (MediaSource* self, Rating rating);
+void media_source_increase_rating (MediaSource* self);
+void media_source_decrease_rating (MediaSource* self);
+static void set_rating_single_command_real_undo (Command* base);
+static void set_rating_single_command_finalize (GObject* obj);
+GType set_rating_command_get_type (void) G_GNUC_CONST;
+#define SET_RATING_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SET_RATING_COMMAND, SetRatingCommandPrivate))
+enum {
+ SET_RATING_COMMAND_DUMMY_PROPERTY
+};
+SetRatingCommand* set_rating_command_new (GeeIterable* iter, Rating rating);
+SetRatingCommand* set_rating_command_construct (GType object_type, GeeIterable* iter, Rating rating);
+gchar* resources_rating_progress (Rating rating);
+static void set_rating_command_save_source_states (SetRatingCommand* self, GeeIterable* iter);
+SetRatingCommand* set_rating_command_new_inc_dec (GeeIterable* iter, gboolean is_incrementing);
+SetRatingCommand* set_rating_command_construct_inc_dec (GType object_type, GeeIterable* iter, gboolean is_incrementing);
+static void set_rating_command_real_execute (Command* base);
+static void set_rating_command_real_undo (Command* base);
+static void set_rating_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source);
+static void set_rating_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source);
+static void set_rating_command_finalize (GObject* obj);
+GType set_raw_developer_command_get_type (void) G_GNUC_CONST;
+GType raw_developer_get_type (void) G_GNUC_CONST;
+#define SET_RAW_DEVELOPER_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SET_RAW_DEVELOPER_COMMAND, SetRawDeveloperCommandPrivate))
+enum {
+ SET_RAW_DEVELOPER_COMMAND_DUMMY_PROPERTY
+};
+SetRawDeveloperCommand* set_raw_developer_command_new (GeeIterable* iter, RawDeveloper developer);
+SetRawDeveloperCommand* set_raw_developer_command_construct (GType object_type, GeeIterable* iter, RawDeveloper developer);
+static void set_raw_developer_command_save_source_states (SetRawDeveloperCommand* self, GeeIterable* iter);
+static gboolean set_raw_developer_command_is_raw_photo (SetRawDeveloperCommand* self, Photo* photo);
+RawDeveloper photo_get_raw_developer (Photo* self);
+static void set_raw_developer_command_real_execute (Command* base);
+static void set_raw_developer_command_real_undo (Command* base);
+static void set_raw_developer_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source);
+gboolean photo_is_raw_developer_available (Photo* self, RawDeveloper d);
+void photo_set_raw_developer (Photo* self, RawDeveloper d);
+static void set_raw_developer_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source);
+GType photo_file_format_get_type (void) G_GNUC_CONST;
+PhotoFileFormat photo_get_master_file_format (Photo* self);
+static void set_raw_developer_command_finalize (GObject* obj);
+GType adjust_date_time_photo_command_get_type (void) G_GNUC_CONST;
+GType dateable_get_type (void) G_GNUC_CONST;
+#define ADJUST_DATE_TIME_PHOTO_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND, AdjustDateTimePhotoCommandPrivate))
+enum {
+ ADJUST_DATE_TIME_PHOTO_COMMAND_DUMMY_PROPERTY
+};
+AdjustDateTimePhotoCommand* adjust_date_time_photo_command_new (Dateable* dateable, gint64 time_shift, gboolean modify_original);
+AdjustDateTimePhotoCommand* adjust_date_time_photo_command_construct (GType object_type, Dateable* dateable, gint64 time_shift, gboolean modify_original);
+#define RESOURCES_ADJUST_DATE_TIME_LABEL _ ("Adjust Date and Time")
+static void adjust_date_time_photo_command_real_execute (Command* base);
+static void adjust_date_time_photo_command_set_time (AdjustDateTimePhotoCommand* self, Dateable* dateable, time_t exposure_time);
+time_t dateable_get_exposure_time (Dateable* self);
+ViewCollection* view_collection_new (const gchar* name);
+ViewCollection* view_collection_construct (GType object_type, const gchar* name);
+GType container_source_collection_get_type (void) G_GNUC_CONST;
+GType event_source_collection_get_type (void) G_GNUC_CONST;
+GeeCollection* data_collection_get_all (DataCollection* self);
+gboolean data_collection_add (DataCollection* self, DataObject* object);
+EventView* event_view_new (EventSource* source);
+EventView* event_view_construct (GType object_type, EventSource* source);
+GType event_view_get_type (void) G_GNUC_CONST;
+void event_generate_single_event (MediaSource* media, ViewCollection* events_so_far, const gchar* event_name);
+static void adjust_date_time_photo_command_real_undo (Command* base);
+void photo_set_exposure_time_persistent (Photo* self, time_t time, GError** error);
+void dateable_set_exposure_time (Dateable* self, time_t target_time);
+static void adjust_date_time_photo_command_finalize (GObject* obj);
+GType adjust_date_time_photos_command_get_type (void) G_GNUC_CONST;
+#define ADJUST_DATE_TIME_PHOTOS_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND, AdjustDateTimePhotosCommandPrivate))
+enum {
+ ADJUST_DATE_TIME_PHOTOS_COMMAND_DUMMY_PROPERTY
+};
+AdjustDateTimePhotosCommand* adjust_date_time_photos_command_new (GeeIterable* iter, gint64 time_shift, gboolean keep_relativity, gboolean modify_originals);
+AdjustDateTimePhotosCommand* adjust_date_time_photos_command_construct (GType object_type, GeeIterable* iter, gint64 time_shift, gboolean keep_relativity, gboolean modify_originals);
+static time_t* _time_t_dup (time_t* self);
+static void adjust_date_time_photos_command_real_execute (Command* base);
+void multiple_object_error_dialog (GeeArrayList* objects, const gchar* message, const gchar* title);
+static void adjust_date_time_photos_command_real_undo (Command* base);
+static void adjust_date_time_photos_command_set_time (AdjustDateTimePhotosCommand* self, Dateable* dateable, time_t exposure_time);
+static void adjust_date_time_photos_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source);
+static void adjust_date_time_photos_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source);
+static void adjust_date_time_photos_command_finalize (GObject* obj);
+GType add_tags_command_get_type (void) G_GNUC_CONST;
+#define ADD_TAGS_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ADD_TAGS_COMMAND, AddTagsCommandPrivate))
+enum {
+ ADD_TAGS_COMMAND_DUMMY_PROPERTY
+};
+static void add_tags_command_on_proxy_broken (AddTagsCommand* self);
+static void _add_tags_command_on_proxy_broken_source_proxy_broken (SourceProxy* _sender, gpointer self);
+static void add_tags_command_on_source_destroyed (AddTagsCommand* self, DataSource* source);
+static void _add_tags_command_on_source_destroyed_source_collection_item_destroyed (SourceCollection* _sender, DataSource* source, gpointer self);
+GType video_source_collection_get_type (void) G_GNUC_CONST;
+AddTagsCommand* add_tags_command_new (gchar** paths, int paths_length1, GeeCollection* sources);
+AddTagsCommand* add_tags_command_construct (GType object_type, gchar** paths, int paths_length1, GeeCollection* sources);
+gchar* resources_add_tags_label (gchar** names, int names_length1);
+GeeList* hierarchical_tag_utilities_enumerate_parent_paths (const gchar* in_path);
+GType tag_get_type (void) G_GNUC_CONST;
+Tag* tag_for_path (const gchar* name);
+gboolean tag_contains (Tag* self, MediaSource* source);
+static void add_tags_command_real_execute (Command* base);
+void tag_attach_many (Tag* self, GeeCollection* sources);
+static void add_tags_command_real_undo (Command* base);
+GeeMultiMap* tag_detach_many (Tag* self, GeeCollection* sources);
+static void add_tags_command_finalize (GObject* obj);
+GType rename_tag_command_get_type (void) G_GNUC_CONST;
+#define RENAME_TAG_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_RENAME_TAG_COMMAND, RenameTagCommandPrivate))
+enum {
+ RENAME_TAG_COMMAND_DUMMY_PROPERTY
+};
+RenameTagCommand* rename_tag_command_new (Tag* tag, const gchar* new_name);
+RenameTagCommand* rename_tag_command_construct (GType object_type, Tag* tag, const gchar* new_name);
+gchar* resources_rename_tag_label (const gchar* old_name, const gchar* new_name);
+gchar* tag_get_user_visible_name (Tag* self);
+gchar* data_object_get_name (DataObject* self);
+static void rename_tag_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source);
+gboolean tag_rename (Tag* self, const gchar* name);
+gchar* resources_rename_tag_exists_message (const gchar* name);
+static void rename_tag_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source);
+static void rename_tag_command_finalize (GObject* obj);
+GType delete_tag_command_get_type (void) G_GNUC_CONST;
+#define DELETE_TAG_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_DELETE_TAG_COMMAND, DeleteTagCommandPrivate))
+enum {
+ DELETE_TAG_COMMAND_DUMMY_PROPERTY
+};
+DeleteTagCommand* delete_tag_command_new (Tag* tag);
+DeleteTagCommand* delete_tag_command_construct (GType object_type, Tag* tag);
+gchar* resources_delete_tag_label (const gchar* name);
+static void delete_tag_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source);
+GeeList* tag_get_hierarchical_children (Tag* self);
+static void delete_tag_command_on_proxy_broken (DeleteTagCommand* self);
+static void _delete_tag_command_on_proxy_broken_source_proxy_broken (SourceProxy* _sender, gpointer self);
+GType tag_source_collection_get_type (void) G_GNUC_CONST;
+static void delete_tag_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source);
+static void delete_tag_command_finalize (GObject* obj);
+GType new_child_tag_command_get_type (void) G_GNUC_CONST;
+#define NEW_CHILD_TAG_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_NEW_CHILD_TAG_COMMAND, NewChildTagCommandPrivate))
+enum {
+ NEW_CHILD_TAG_COMMAND_DUMMY_PROPERTY
+};
+NewChildTagCommand* new_child_tag_command_new (Tag* tag);
+NewChildTagCommand* new_child_tag_command_construct (GType object_type, Tag* tag);
+static void new_child_tag_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source);
+Tag* tag_create_new_child (Tag* self);
+static void new_child_tag_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source);
+Tag* new_child_tag_command_get_created_child (NewChildTagCommand* self);
+static void new_child_tag_command_finalize (GObject* obj);
+GType new_root_tag_command_get_type (void) G_GNUC_CONST;
+#define NEW_ROOT_TAG_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_NEW_ROOT_TAG_COMMAND, NewRootTagCommandPrivate))
+enum {
+ NEW_ROOT_TAG_COMMAND_DUMMY_PROPERTY
+};
+NewRootTagCommand* new_root_tag_command_new (void);
+NewRootTagCommand* new_root_tag_command_construct (GType object_type);
+static void new_root_tag_command_real_execute (Command* base);
+Tag* tag_create_new_root (void);
+static void new_root_tag_command_real_undo (Command* base);
+Tag* new_root_tag_command_get_created_tag (NewRootTagCommand* self);
+static void new_root_tag_command_finalize (GObject* obj);
+GType reparent_tag_command_get_type (void) G_GNUC_CONST;
+#define REPARENT_TAG_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_REPARENT_TAG_COMMAND, ReparentTagCommandPrivate))
+enum {
+ REPARENT_TAG_COMMAND_DUMMY_PROPERTY
+};
+static void reparent_tag_command_on_items_destroyed (ReparentTagCommand* self, GeeCollection* destroyed);
+static void _reparent_tag_command_on_items_destroyed_source_collection_items_destroyed (SourceCollection* _sender, GeeCollection* destroyed, gpointer self);
+ReparentTagCommand* reparent_tag_command_new (Tag* tag, const gchar* new_parent_path);
+ReparentTagCommand* reparent_tag_command_construct (GType object_type, Tag* tag, const gchar* new_parent_path);
+gchar* tag_get_path (Tag* self);
+#define TAG_PATH_SEPARATOR_STRING "/"
+gchar* hierarchical_tag_utilities_get_root_path_form (const gchar* client_path);
+gboolean tag_source_collection_exists (TagSourceCollection* self, const gchar* name, gboolean treat_htags_as_root);
+GeeCollection* tag_get_sources (Tag* self);
+static GeeMap* reparent_tag_command_get_child_structure_at (ReparentTagCommand* self, const gchar* client_path);
+static void reparent_tag_command_restore_child_attachments_at (ReparentTagCommand* self, const gchar* client_path, GeeMap* child_structure);
+void tag_promote (Tag* self);
+void tag_attach (Tag* self, MediaSource* source);
+static void reparent_tag_command_reattach_in_play_sources_at (ReparentTagCommand* self, const gchar* client_path);
+static void reparent_tag_command_save_before_state (ReparentTagCommand* self);
+static void reparent_tag_command_restore_before_state (ReparentTagCommand* self);
+GeeList* tag_detach (Tag* self, MediaSource* source);
+static void reparent_tag_command_save_after_state (ReparentTagCommand* self);
+static void reparent_tag_command_restore_after_state (ReparentTagCommand* self);
+static void reparent_tag_command_prepare_parent (ReparentTagCommand* self, const gchar* path);
+static void reparent_tag_command_do_source_parent_detachments (ReparentTagCommand* self);
+Tag* tag_get_hierarchical_parent (Tag* self);
+gint tag_get_attachment_count (Tag* self, MediaSource* source);
+static void reparent_tag_command_do_source_parent_reattachments (ReparentTagCommand* self);
+static void reparent_tag_command_do_destination_parent_detachments (ReparentTagCommand* self);
+static void reparent_tag_command_do_destination_parent_reattachments (ReparentTagCommand* self);
+static void reparent_tag_command_copy_subtree (ReparentTagCommand* self, const gchar* from, const gchar* to);
+static void reparent_tag_command_destroy_subtree (ReparentTagCommand* self, const gchar* client_path);
+static void reparent_tag_command_real_execute (Command* base);
+static void reparent_tag_command_real_undo (Command* base);
+void hierarchical_tag_utilities_cleanup_root_path (const gchar* path);
+static void reparent_tag_command_finalize (GObject* obj);
+GType modify_tags_command_get_type (void) G_GNUC_CONST;
+#define MODIFY_TAGS_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MODIFY_TAGS_COMMAND, ModifyTagsCommandPrivate))
+enum {
+ MODIFY_TAGS_COMMAND_DUMMY_PROPERTY
+};
+static void modify_tags_command_on_proxy_broken (ModifyTagsCommand* self);
+static void _modify_tags_command_on_proxy_broken_source_proxy_broken (SourceProxy* _sender, gpointer self);
+ModifyTagsCommand* modify_tags_command_new (MediaSource* media, GeeCollection* new_tag_list);
+ModifyTagsCommand* modify_tags_command_construct (GType object_type, MediaSource* media, GeeCollection* new_tag_list);
+#define RESOURCES_MODIFY_TAGS_LABEL _ ("Modify Tags")
+GeeList* tag_source_collection_fetch_for_source (TagSourceCollection* self, MediaSource* source);
+static void modify_tags_command_real_execute (Command* base);
+static void modify_tags_command_real_undo (Command* base);
+static void modify_tags_command_finalize (GObject* obj);
+GType tag_untag_photos_command_get_type (void) G_GNUC_CONST;
+#define TAG_UNTAG_PHOTOS_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_TAG_UNTAG_PHOTOS_COMMAND, TagUntagPhotosCommandPrivate))
+enum {
+ TAG_UNTAG_PHOTOS_COMMAND_DUMMY_PROPERTY
+};
+static void tag_untag_photos_command_on_source_destroyed (TagUntagPhotosCommand* self, DataSource* source);
+static void _tag_untag_photos_command_on_source_destroyed_source_collection_item_destroyed (SourceCollection* _sender, DataSource* source, gpointer self);
+TagUntagPhotosCommand* tag_untag_photos_command_new (Tag* tag, GeeCollection* sources, gint count, gboolean attach);
+TagUntagPhotosCommand* tag_untag_photos_command_construct (GType object_type, Tag* tag, GeeCollection* sources, gint count, gboolean attach);
+gchar* resources_tag_photos_label (const gchar* name, gint count);
+gchar* resources_untag_photos_label (const gchar* name, gint count);
+static void tag_untag_photos_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source);
+static void tag_untag_photos_command_do_attach (TagUntagPhotosCommand* self, Tag* tag);
+static void tag_untag_photos_command_do_detach (TagUntagPhotosCommand* self, Tag* tag);
+static void tag_untag_photos_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source);
+gchar* data_object_to_string (DataObject* self);
+static void tag_untag_photos_command_finalize (GObject* obj);
+GType rename_saved_search_command_get_type (void) G_GNUC_CONST;
+GType saved_search_get_type (void) G_GNUC_CONST;
+#define RENAME_SAVED_SEARCH_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_RENAME_SAVED_SEARCH_COMMAND, RenameSavedSearchCommandPrivate))
+enum {
+ RENAME_SAVED_SEARCH_COMMAND_DUMMY_PROPERTY
+};
+RenameSavedSearchCommand* rename_saved_search_command_new (SavedSearch* search, const gchar* new_name);
+RenameSavedSearchCommand* rename_saved_search_command_construct (GType object_type, SavedSearch* search, const gchar* new_name);
+gchar* resources_rename_search_label (const gchar* old_name, const gchar* new_name);
+static void rename_saved_search_command_real_execute (Command* base);
+gboolean saved_search_rename (SavedSearch* self, const gchar* new_name);
+gchar* resources_rename_search_exists_message (const gchar* name);
+static void rename_saved_search_command_real_undo (Command* base);
+static void rename_saved_search_command_finalize (GObject* obj);
+GType delete_saved_search_command_get_type (void) G_GNUC_CONST;
+#define DELETE_SAVED_SEARCH_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_DELETE_SAVED_SEARCH_COMMAND, DeleteSavedSearchCommandPrivate))
+enum {
+ DELETE_SAVED_SEARCH_COMMAND_DUMMY_PROPERTY
+};
+DeleteSavedSearchCommand* delete_saved_search_command_new (SavedSearch* search);
+DeleteSavedSearchCommand* delete_saved_search_command_construct (GType object_type, SavedSearch* search);
+gchar* resources_delete_search_label (const gchar* name);
+static void delete_saved_search_command_real_execute (Command* base);
+gpointer saved_search_table_ref (gpointer instance);
+void saved_search_table_unref (gpointer instance);
+GParamSpec* param_spec_saved_search_table (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void value_set_saved_search_table (GValue* value, gpointer v_object);
+void value_take_saved_search_table (GValue* value, gpointer v_object);
+gpointer value_get_saved_search_table (const GValue* value);
+GType saved_search_table_get_type (void) G_GNUC_CONST;
+SavedSearchTable* saved_search_table_get_instance (void);
+void saved_search_table_remove (SavedSearchTable* self, SavedSearch* search);
+static void delete_saved_search_command_real_undo (Command* base);
+void saved_search_reconstitute (SavedSearch* self);
+static void delete_saved_search_command_finalize (GObject* obj);
+GType trash_untrash_photos_command_get_type (void) G_GNUC_CONST;
+#define TRASH_UNTRASH_PHOTOS_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_TRASH_UNTRASH_PHOTOS_COMMAND, TrashUntrashPhotosCommandPrivate))
+enum {
+ TRASH_UNTRASH_PHOTOS_COMMAND_DUMMY_PROPERTY
+};
+static void trash_untrash_photos_command_on_photo_destroyed (TrashUntrashPhotosCommand* self, DataSource* source);
+static void _trash_untrash_photos_command_on_photo_destroyed_source_collection_item_destroyed (SourceCollection* _sender, DataSource* source, gpointer self);
+TrashUntrashPhotosCommand* trash_untrash_photos_command_new (GeeCollection* sources, gboolean to_trash);
+TrashUntrashPhotosCommand* trash_untrash_photos_command_construct (GType object_type, GeeCollection* sources, gboolean to_trash);
+static ProgressDialog* trash_untrash_photos_command_get_progress_dialog (TrashUntrashPhotosCommand* self, gboolean to_trash);
+void progress_dialog_update_display_every (ProgressDialog* self, gint update_every);
+static void trash_untrash_photos_command_real_execute (Command* base);
+gboolean progress_dialog_monitor (ProgressDialog* self, guint64 count, guint64 total, gboolean do_event_loop);
+static gboolean _progress_dialog_monitor_progress_monitor (guint64 current, guint64 total, gboolean do_event_loop, gpointer self);
+static void trash_untrash_photos_command_trash (TrashUntrashPhotosCommand* self, ProgressMonitor monitor, void* monitor_target);
+static void trash_untrash_photos_command_untrash (TrashUntrashPhotosCommand* self, ProgressMonitor monitor, void* monitor_target);
+static void trash_untrash_photos_command_real_undo (Command* base);
+void media_source_trash (MediaSource* self);
+void media_source_untrash (MediaSource* self);
+static void trash_untrash_photos_command_finalize (GObject* obj);
+GType flag_unflag_command_get_type (void) G_GNUC_CONST;
+#define FLAG_UNFLAG_COMMAND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_FLAG_UNFLAG_COMMAND, FlagUnflagCommandPrivate))
+enum {
+ FLAG_UNFLAG_COMMAND_DUMMY_PROPERTY
+};
+#define FLAG_UNFLAG_COMMAND_MIN_PROGRESS_BAR_THRESHOLD 1000
+#define FLAG_UNFLAG_COMMAND_FLAG_SELECTED_STRING _ ("Flag selected photos")
+#define FLAG_UNFLAG_COMMAND_UNFLAG_SELECTED_STRING _ ("Unflag selected photos")
+#define FLAG_UNFLAG_COMMAND_FLAG_PROGRESS _ ("Flagging selected photos")
+#define FLAG_UNFLAG_COMMAND_UNFLAG_PROGRESS _ ("Unflagging selected photos")
+FlagUnflagCommand* flag_unflag_command_new (GeeCollection* sources, gboolean flag);
+FlagUnflagCommand* flag_unflag_command_construct (GType object_type, GeeCollection* sources, gboolean flag);
+static void flag_unflag_command_real_execute_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources);
+static void flag_unflag_command_flag_unflag (FlagUnflagCommand* self, DataSource* source, gboolean flag);
+static void flag_unflag_command_real_undo_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources);
+GType flaggable_get_type (void) G_GNUC_CONST;
+void flaggable_mark_flagged (Flaggable* self);
+void flaggable_mark_unflagged (Flaggable* self);
+static void flag_unflag_command_finalize (GObject* obj);
+
+
+static void _page_command_on_page_destroyed_gtk_widget_destroy (GtkWidget* _sender, gpointer self) {
+#line 45 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_command_on_page_destroyed ((PageCommand*) self);
+#line 2757 "Commands.c"
+}
+
+
+static void _page_command_on_photo_destroyed_data_source_destroyed (DataSource* _sender, gpointer self) {
+#line 48 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_command_on_photo_destroyed ((PageCommand*) self);
+#line 2764 "Commands.c"
+}
+
+
+static void _page_command_on_controller_destroyed_gtk_widget_destroy (GtkWidget* _sender, gpointer self) {
+#line 51 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_command_on_controller_destroyed ((PageCommand*) self);
+#line 2771 "Commands.c"
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+#line 27 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self ? g_object_ref (self) : NULL;
+#line 2778 "Commands.c"
+}
+
+
+PageCommand* page_command_construct (GType object_type, const gchar* name, const gchar* explanation) {
+ PageCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ AppWindow* _tmp2_ = NULL;
+ AppWindow* _tmp3_ = NULL;
+ Page* _tmp4_ = NULL;
+ Page* _tmp5_ = NULL;
+#line 15 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 15 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 16 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = name;
+#line 16 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = explanation;
+#line 16 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (PageCommand*) command_construct (object_type, _tmp0_, _tmp1_);
+#line 18 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = app_window_get_instance ();
+#line 18 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 18 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = page_window_get_current_page (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_PAGE_WINDOW, PageWindow));
+#line 18 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->page);
+#line 18 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->page = _tmp4_;
+#line 18 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp3_);
+#line 20 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->page;
+#line 20 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp5_ != NULL) {
+#line 2816 "Commands.c"
+ Page* _tmp6_ = NULL;
+ LibraryPhotoPage* photo_page = NULL;
+ Page* _tmp7_ = NULL;
+ LibraryPhotoPage* _tmp8_ = NULL;
+ LibraryPhotoPage* _tmp9_ = NULL;
+#line 21 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = self->priv->page;
+#line 21 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, gtk_widget_get_type (), GtkWidget), "destroy", (GCallback) _page_command_on_page_destroyed_gtk_widget_destroy, self, 0);
+#line 27 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->page;
+#line 27 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, TYPE_LIBRARY_PHOTO_PAGE) ? ((LibraryPhotoPage*) _tmp7_) : NULL);
+#line 27 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_page = _tmp8_;
+#line 28 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = photo_page;
+#line 28 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp9_ != NULL) {
+#line 2836 "Commands.c"
+ LibraryPhotoPage* _tmp10_ = NULL;
+ Photo* _tmp11_ = NULL;
+ LibraryPhotoPage* _tmp12_ = NULL;
+ CollectionPage* _tmp13_ = NULL;
+ gboolean _tmp14_ = FALSE;
+ Photo* _tmp15_ = NULL;
+#line 29 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = photo_page;
+#line 29 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = editing_host_page_get_photo (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, TYPE_EDITING_HOST_PAGE, EditingHostPage));
+#line 29 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->library_photo);
+#line 29 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->library_photo = _tmp11_;
+#line 30 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = photo_page;
+#line 30 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = library_photo_page_get_controller_page (_tmp12_);
+#line 30 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->collection_page);
+#line 30 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->collection_page = _tmp13_;
+#line 32 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = self->priv->library_photo;
+#line 32 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp15_ != NULL) {
+#line 2863 "Commands.c"
+ CollectionPage* _tmp16_ = NULL;
+#line 32 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = self->priv->collection_page;
+#line 32 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _tmp16_ != NULL;
+#line 2869 "Commands.c"
+ } else {
+#line 32 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = FALSE;
+#line 2873 "Commands.c"
+ }
+#line 32 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp14_) {
+#line 2877 "Commands.c"
+ Photo* _tmp17_ = NULL;
+ CollectionPage* _tmp18_ = NULL;
+#line 33 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = self->priv->library_photo;
+#line 33 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, TYPE_DATA_SOURCE, DataSource), "destroyed", (GCallback) _page_command_on_photo_destroyed_data_source_destroyed, self, 0);
+#line 34 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = self->priv->collection_page;
+#line 34 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, gtk_widget_get_type (), GtkWidget), "destroy", (GCallback) _page_command_on_controller_destroyed_gtk_widget_destroy, self, 0);
+#line 2888 "Commands.c"
+ } else {
+#line 36 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->library_photo);
+#line 36 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->library_photo = NULL;
+#line 37 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->collection_page);
+#line 37 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->collection_page = NULL;
+#line 2898 "Commands.c"
+ }
+ }
+#line 20 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo_page);
+#line 2903 "Commands.c"
+ }
+#line 15 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 2907 "Commands.c"
+}
+
+
+void page_command_set_auto_return_to_page (PageCommand* self, gboolean auto_return) {
+ gboolean _tmp0_ = FALSE;
+#line 54 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PAGE_COMMAND (self));
+#line 55 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = auto_return;
+#line 55 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->auto_return = _tmp0_;
+#line 2919 "Commands.c"
+}
+
+
+static void page_command_real_prepare (Command* base) {
+ PageCommand * self;
+ gboolean _tmp0_ = FALSE;
+#line 58 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_PAGE_COMMAND, PageCommand);
+#line 59 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->auto_return;
+#line 59 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_) {
+#line 60 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_command_return_to_page (self);
+#line 2934 "Commands.c"
+ }
+#line 62 "/home/jens/Source/shotwell/src/Commands.vala"
+ COMMAND_CLASS (page_command_parent_class)->prepare (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 2938 "Commands.c"
+}
+
+
+void page_command_return_to_page (PageCommand* self) {
+ LibraryPhotoPage* photo_page = NULL;
+ Page* _tmp0_ = NULL;
+ LibraryPhotoPage* _tmp1_ = NULL;
+ LibraryPhotoPage* _tmp2_ = NULL;
+#line 65 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PAGE_COMMAND (self));
+#line 66 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->page;
+#line 66 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, TYPE_LIBRARY_PHOTO_PAGE) ? ((LibraryPhotoPage*) _tmp0_) : NULL);
+#line 66 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_page = _tmp1_;
+#line 68 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = photo_page;
+#line 68 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ != NULL) {
+#line 2959 "Commands.c"
+ gboolean _tmp3_ = FALSE;
+ Photo* _tmp4_ = NULL;
+#line 69 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->library_photo;
+#line 69 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_ != NULL) {
+#line 2966 "Commands.c"
+ CollectionPage* _tmp5_ = NULL;
+#line 69 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->collection_page;
+#line 69 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp5_ != NULL;
+#line 2972 "Commands.c"
+ } else {
+#line 69 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = FALSE;
+#line 2976 "Commands.c"
+ }
+#line 69 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_) {
+#line 2980 "Commands.c"
+ gboolean photo_in_collection = FALSE;
+ gint count = 0;
+ CollectionPage* _tmp6_ = NULL;
+ ViewCollection* _tmp7_ = NULL;
+ ViewCollection* _tmp8_ = NULL;
+ gint _tmp9_ = 0;
+ gint _tmp10_ = 0;
+ gboolean _tmp25_ = FALSE;
+#line 70 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_in_collection = FALSE;
+#line 71 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = self->priv->collection_page;
+#line 71 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = page_get_view (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_PAGE, Page));
+#line 71 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tmp7_;
+#line 71 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = data_collection_get_count (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_DATA_COLLECTION, DataCollection));
+#line 71 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_;
+#line 71 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (_tmp8_);
+#line 71 "/home/jens/Source/shotwell/src/Commands.vala"
+ count = _tmp10_;
+#line 3005 "Commands.c"
+ {
+ gint i = 0;
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = 0;
+#line 3010 "Commands.c"
+ {
+ gboolean _tmp11_ = FALSE;
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = TRUE;
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 3017 "Commands.c"
+ gint _tmp13_ = 0;
+ gint _tmp14_ = 0;
+ CollectionPage* _tmp15_ = NULL;
+ ViewCollection* _tmp16_ = NULL;
+ ViewCollection* _tmp17_ = NULL;
+ gint _tmp18_ = 0;
+ DataObject* _tmp19_ = NULL;
+ Thumbnail* _tmp20_ = NULL;
+ MediaSource* _tmp21_ = NULL;
+ MediaSource* _tmp22_ = NULL;
+ Photo* _tmp23_ = NULL;
+ gboolean _tmp24_ = FALSE;
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp11_) {
+#line 3032 "Commands.c"
+ gint _tmp12_ = 0;
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = i;
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp12_ + 1;
+#line 3038 "Commands.c"
+ }
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = FALSE;
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = i;
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = count;
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp13_ < _tmp14_)) {
+#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 3050 "Commands.c"
+ }
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = self->priv->collection_page;
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = page_get_view (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, TYPE_PAGE, Page));
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _tmp16_;
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = i;
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = data_collection_get_at (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, TYPE_DATA_COLLECTION, DataCollection), _tmp18_);
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, TYPE_THUMBNAIL, Thumbnail);
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = thumbnail_get_media_source (_tmp20_);
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = _tmp21_;
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = self->priv->library_photo;
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _tmp22_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, TYPE_MEDIA_SOURCE, MediaSource);
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp22_);
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp20_);
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (_tmp17_);
+#line 73 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp24_) {
+#line 74 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_in_collection = TRUE;
+#line 75 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 3084 "Commands.c"
+ }
+ }
+ }
+ }
+#line 79 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = photo_in_collection;
+#line 79 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp25_) {
+#line 3093 "Commands.c"
+ LibraryWindow* _tmp26_ = NULL;
+ LibraryWindow* _tmp27_ = NULL;
+ CollectionPage* _tmp28_ = NULL;
+ Photo* _tmp29_ = NULL;
+#line 80 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = library_window_get_app ();
+#line 80 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = _tmp26_;
+#line 80 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = self->priv->collection_page;
+#line 80 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = self->priv->library_photo;
+#line 80 "/home/jens/Source/shotwell/src/Commands.vala"
+ library_window_switch_to_photo_page (_tmp27_, _tmp28_, _tmp29_);
+#line 80 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp27_);
+#line 3110 "Commands.c"
+ }
+ }
+ } else {
+ Page* _tmp30_ = NULL;
+#line 82 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = self->priv->page;
+#line 82 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp30_ != NULL) {
+#line 3119 "Commands.c"
+ AppWindow* _tmp31_ = NULL;
+ AppWindow* _tmp32_ = NULL;
+ Page* _tmp33_ = NULL;
+#line 83 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = app_window_get_instance ();
+#line 83 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = _tmp31_;
+#line 83 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = self->priv->page;
+#line 83 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_current_page (G_TYPE_CHECK_INSTANCE_CAST (_tmp32_, TYPE_PAGE_WINDOW, PageWindow), _tmp33_);
+#line 83 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp32_);
+#line 3133 "Commands.c"
+ }
+ }
+#line 65 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo_page);
+#line 3138 "Commands.c"
+}
+
+
+static void page_command_on_page_destroyed (PageCommand* self) {
+ Page* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+#line 86 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PAGE_COMMAND (self));
+#line 87 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->page;
+#line 87 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("destroy", gtk_widget_get_type (), &_tmp1_, NULL, FALSE);
+#line 87 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, gtk_widget_get_type (), GtkWidget), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _page_command_on_page_destroyed_gtk_widget_destroy, self);
+#line 88 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->page);
+#line 88 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->page = NULL;
+#line 3157 "Commands.c"
+}
+
+
+static void page_command_on_photo_destroyed (PageCommand* self) {
+ Photo* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+#line 91 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PAGE_COMMAND (self));
+#line 92 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->library_photo;
+#line 92 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("destroyed", TYPE_DATA_SOURCE, &_tmp1_, NULL, FALSE);
+#line 92 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_SOURCE, DataSource), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _page_command_on_photo_destroyed_data_source_destroyed, self);
+#line 93 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->library_photo);
+#line 93 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->library_photo = NULL;
+#line 3176 "Commands.c"
+}
+
+
+static void page_command_on_controller_destroyed (PageCommand* self) {
+ CollectionPage* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+#line 96 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PAGE_COMMAND (self));
+#line 97 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->collection_page;
+#line 97 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("destroy", gtk_widget_get_type (), &_tmp1_, NULL, FALSE);
+#line 97 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, gtk_widget_get_type (), GtkWidget), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _page_command_on_controller_destroyed_gtk_widget_destroy, self);
+#line 98 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->collection_page);
+#line 98 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->collection_page = NULL;
+#line 3195 "Commands.c"
+}
+
+
+static void page_command_class_init (PageCommandClass * klass) {
+#line 9 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_command_parent_class = g_type_class_peek_parent (klass);
+#line 9 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (PageCommandPrivate));
+#line 9 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->prepare = page_command_real_prepare;
+#line 9 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = page_command_finalize;
+#line 3208 "Commands.c"
+}
+
+
+static void page_command_instance_init (PageCommand * self) {
+#line 9 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = PAGE_COMMAND_GET_PRIVATE (self);
+#line 11 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->auto_return = TRUE;
+#line 12 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->library_photo = NULL;
+#line 13 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->collection_page = NULL;
+#line 3221 "Commands.c"
+}
+
+
+static void page_command_finalize (GObject* obj) {
+ PageCommand * self;
+ Page* _tmp0_ = NULL;
+ Photo* _tmp3_ = NULL;
+ CollectionPage* _tmp6_ = NULL;
+#line 9 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PAGE_COMMAND, PageCommand);
+#line 44 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->page;
+#line 44 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_ != NULL) {
+#line 3236 "Commands.c"
+ Page* _tmp1_ = NULL;
+ guint _tmp2_ = 0U;
+#line 45 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->page;
+#line 45 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("destroy", gtk_widget_get_type (), &_tmp2_, NULL, FALSE);
+#line 45 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_widget_get_type (), GtkWidget), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp2_, 0, NULL, (GCallback) _page_command_on_page_destroyed_gtk_widget_destroy, self);
+#line 3245 "Commands.c"
+ }
+#line 47 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->library_photo;
+#line 47 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_ != NULL) {
+#line 3251 "Commands.c"
+ Photo* _tmp4_ = NULL;
+ guint _tmp5_ = 0U;
+#line 48 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->library_photo;
+#line 48 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("destroyed", TYPE_DATA_SOURCE, &_tmp5_, NULL, FALSE);
+#line 48 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_DATA_SOURCE, DataSource), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp5_, 0, NULL, (GCallback) _page_command_on_photo_destroyed_data_source_destroyed, self);
+#line 3260 "Commands.c"
+ }
+#line 50 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = self->priv->collection_page;
+#line 50 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp6_ != NULL) {
+#line 3266 "Commands.c"
+ CollectionPage* _tmp7_ = NULL;
+ guint _tmp8_ = 0U;
+#line 51 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->collection_page;
+#line 51 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("destroy", gtk_widget_get_type (), &_tmp8_, NULL, FALSE);
+#line 51 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, gtk_widget_get_type (), GtkWidget), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp8_, 0, NULL, (GCallback) _page_command_on_controller_destroyed_gtk_widget_destroy, self);
+#line 3275 "Commands.c"
+ }
+#line 10 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->page);
+#line 12 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->library_photo);
+#line 13 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->collection_page);
+#line 9 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (page_command_parent_class)->finalize (obj);
+#line 3285 "Commands.c"
+}
+
+
+GType page_command_get_type (void) {
+ static volatile gsize page_command_type_id__volatile = 0;
+ if (g_once_init_enter (&page_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (PageCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) page_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PageCommand), 0, (GInstanceInitFunc) page_command_instance_init, NULL };
+ GType page_command_type_id;
+ page_command_type_id = g_type_register_static (TYPE_COMMAND, "PageCommand", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&page_command_type_id__volatile, page_command_type_id);
+ }
+ return page_command_type_id__volatile;
+}
+
+
+static void _single_data_source_command_on_source_destroyed_data_source_destroyed (DataSource* _sender, gpointer self) {
+#line 115 "/home/jens/Source/shotwell/src/Commands.vala"
+ single_data_source_command_on_source_destroyed ((SingleDataSourceCommand*) self);
+#line 3304 "Commands.c"
+}
+
+
+SingleDataSourceCommand* single_data_source_command_construct (GType object_type, DataSource* source, const gchar* name, const gchar* explanation) {
+ SingleDataSourceCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ DataSource* _tmp2_ = NULL;
+ DataSource* _tmp3_ = NULL;
+ DataSource* _tmp4_ = NULL;
+#line 106 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_DATA_SOURCE (source), NULL);
+#line 106 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 106 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 107 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = name;
+#line 107 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = explanation;
+#line 107 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (SingleDataSourceCommand*) page_command_construct (object_type, _tmp0_, _tmp1_);
+#line 109 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = source;
+#line 109 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _g_object_ref0 (_tmp2_);
+#line 109 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->source);
+#line 109 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->source = _tmp3_;
+#line 111 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = source;
+#line 111 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp4_, "destroyed", (GCallback) _single_data_source_command_on_source_destroyed_data_source_destroyed, self, 0);
+#line 106 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 3341 "Commands.c"
+}
+
+
+DataSource* single_data_source_command_get_source (SingleDataSourceCommand* self) {
+ DataSource* result = NULL;
+ DataSource* _tmp0_ = NULL;
+ DataSource* _tmp1_ = NULL;
+#line 118 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_SINGLE_DATA_SOURCE_COMMAND (self), NULL);
+#line 119 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->source;
+#line 119 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 119 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = _tmp1_;
+#line 119 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 3359 "Commands.c"
+}
+
+
+static void single_data_source_command_on_source_destroyed (SingleDataSourceCommand* self) {
+ CommandManager* _tmp0_ = NULL;
+ CommandManager* _tmp1_ = NULL;
+#line 122 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_SINGLE_DATA_SOURCE_COMMAND (self));
+#line 125 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 125 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 125 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp1_);
+#line 125 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp1_);
+#line 3376 "Commands.c"
+}
+
+
+static void single_data_source_command_class_init (SingleDataSourceCommandClass * klass) {
+#line 103 "/home/jens/Source/shotwell/src/Commands.vala"
+ single_data_source_command_parent_class = g_type_class_peek_parent (klass);
+#line 103 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = single_data_source_command_finalize;
+#line 3385 "Commands.c"
+}
+
+
+static void single_data_source_command_instance_init (SingleDataSourceCommand * self) {
+}
+
+
+static void single_data_source_command_finalize (GObject* obj) {
+ SingleDataSourceCommand * self;
+ DataSource* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+#line 103 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand);
+#line 115 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->source;
+#line 115 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("destroyed", TYPE_DATA_SOURCE, &_tmp1_, NULL, FALSE);
+#line 115 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp0_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _single_data_source_command_on_source_destroyed_data_source_destroyed, self);
+#line 104 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->source);
+#line 103 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (single_data_source_command_parent_class)->finalize (obj);
+#line 3409 "Commands.c"
+}
+
+
+GType single_data_source_command_get_type (void) {
+ static volatile gsize single_data_source_command_type_id__volatile = 0;
+ if (g_once_init_enter (&single_data_source_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SingleDataSourceCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) single_data_source_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SingleDataSourceCommand), 0, (GInstanceInitFunc) single_data_source_command_instance_init, NULL };
+ GType single_data_source_command_type_id;
+ single_data_source_command_type_id = g_type_register_static (TYPE_PAGE_COMMAND, "SingleDataSourceCommand", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&single_data_source_command_type_id__volatile, single_data_source_command_type_id);
+ }
+ return single_data_source_command_type_id__volatile;
+}
+
+
+static void _simple_proxyable_command_on_proxy_broken_source_proxy_broken (SourceProxy* _sender, gpointer self) {
+#line 141 "/home/jens/Source/shotwell/src/Commands.vala"
+ simple_proxyable_command_on_proxy_broken ((SimpleProxyableCommand*) self);
+#line 3428 "Commands.c"
+}
+
+
+SimpleProxyableCommand* simple_proxyable_command_construct (GType object_type, Proxyable* proxyable, const gchar* name, const gchar* explanation) {
+ SimpleProxyableCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ Proxyable* _tmp2_ = NULL;
+ SourceProxy* _tmp3_ = NULL;
+ SourceProxy* _tmp4_ = NULL;
+#line 133 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PROXYABLE (proxyable), NULL);
+#line 133 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 133 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 134 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = name;
+#line 134 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = explanation;
+#line 134 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (SimpleProxyableCommand*) page_command_construct (object_type, _tmp0_, _tmp1_);
+#line 136 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = proxyable;
+#line 136 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = proxyable_get_proxy (_tmp2_);
+#line 136 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (self->priv->proxy);
+#line 136 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->proxy = _tmp3_;
+#line 137 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->proxy;
+#line 137 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp4_, "broken", (GCallback) _simple_proxyable_command_on_proxy_broken_source_proxy_broken, self, 0);
+#line 133 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 3465 "Commands.c"
+}
+
+
+static void simple_proxyable_command_real_execute (Command* base) {
+ SimpleProxyableCommand * self;
+ SourceProxy* _tmp0_ = NULL;
+ DataSource* _tmp1_ = NULL;
+ DataSource* _tmp2_ = NULL;
+#line 145 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SIMPLE_PROXYABLE_COMMAND, SimpleProxyableCommand);
+#line 146 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->proxy;
+#line 146 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = source_proxy_get_source (_tmp0_);
+#line 146 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 146 "/home/jens/Source/shotwell/src/Commands.vala"
+ simple_proxyable_command_execute_on_source (self, _tmp2_);
+#line 146 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp2_);
+#line 3486 "Commands.c"
+}
+
+
+static void simple_proxyable_command_real_execute_on_source (SimpleProxyableCommand* self, DataSource* source) {
+#line 149 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("Type `%s' does not implement abstract method `simple_proxyable_command_execute_on_source'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
+#line 149 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 3495 "Commands.c"
+}
+
+
+void simple_proxyable_command_execute_on_source (SimpleProxyableCommand* self, DataSource* source) {
+#line 149 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_SIMPLE_PROXYABLE_COMMAND (self));
+#line 149 "/home/jens/Source/shotwell/src/Commands.vala"
+ SIMPLE_PROXYABLE_COMMAND_GET_CLASS (self)->execute_on_source (self, source);
+#line 3504 "Commands.c"
+}
+
+
+static void simple_proxyable_command_real_undo (Command* base) {
+ SimpleProxyableCommand * self;
+ SourceProxy* _tmp0_ = NULL;
+ DataSource* _tmp1_ = NULL;
+ DataSource* _tmp2_ = NULL;
+#line 151 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SIMPLE_PROXYABLE_COMMAND, SimpleProxyableCommand);
+#line 152 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->proxy;
+#line 152 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = source_proxy_get_source (_tmp0_);
+#line 152 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 152 "/home/jens/Source/shotwell/src/Commands.vala"
+ simple_proxyable_command_undo_on_source (self, _tmp2_);
+#line 152 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp2_);
+#line 3525 "Commands.c"
+}
+
+
+static void simple_proxyable_command_real_undo_on_source (SimpleProxyableCommand* self, DataSource* source) {
+#line 155 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("Type `%s' does not implement abstract method `simple_proxyable_command_undo_on_source'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
+#line 155 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 3534 "Commands.c"
+}
+
+
+void simple_proxyable_command_undo_on_source (SimpleProxyableCommand* self, DataSource* source) {
+#line 155 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_SIMPLE_PROXYABLE_COMMAND (self));
+#line 155 "/home/jens/Source/shotwell/src/Commands.vala"
+ SIMPLE_PROXYABLE_COMMAND_GET_CLASS (self)->undo_on_source (self, source);
+#line 3543 "Commands.c"
+}
+
+
+void simple_proxyable_command_add_proxyables (SimpleProxyableCommand* self, GeeCollection* proxyables) {
+#line 161 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_SIMPLE_PROXYABLE_COMMAND (self));
+#line 161 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_COLLECTION (proxyables));
+#line 3552 "Commands.c"
+ {
+ GeeIterator* _proxyable_it = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = proxyables;
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxyable_it = _tmp1_;
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 3565 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ Proxyable* proxyable = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ SourceProxy* added_proxy = NULL;
+ Proxyable* _tmp6_ = NULL;
+ SourceProxy* _tmp7_ = NULL;
+ SourceProxy* _tmp8_ = NULL;
+ GeeHashSet* _tmp9_ = NULL;
+ SourceProxy* _tmp10_ = NULL;
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _proxyable_it;
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 3585 "Commands.c"
+ }
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _proxyable_it;
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxyable = (Proxyable*) _tmp5_;
+#line 163 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = proxyable;
+#line 163 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = proxyable_get_proxy (_tmp6_);
+#line 163 "/home/jens/Source/shotwell/src/Commands.vala"
+ added_proxy = _tmp7_;
+#line 164 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = added_proxy;
+#line 164 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp8_, "broken", (GCallback) _simple_proxyable_command_on_proxy_broken_source_proxy_broken, self, 0);
+#line 165 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->priv->proxies;
+#line 165 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = added_proxy;
+#line 165 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp10_);
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (added_proxy);
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (proxyable);
+#line 3613 "Commands.c"
+ }
+#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_proxyable_it);
+#line 3617 "Commands.c"
+ }
+}
+
+
+void simple_proxyable_command_clear_added_proxies (SimpleProxyableCommand* self) {
+ GeeHashSet* _tmp8_ = NULL;
+#line 170 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_SIMPLE_PROXYABLE_COMMAND (self));
+#line 3626 "Commands.c"
+ {
+ GeeIterator* _added_proxy_it = NULL;
+ GeeHashSet* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->proxies;
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _added_proxy_it = _tmp1_;
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 3639 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ SourceProxy* added_proxy = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ SourceProxy* _tmp6_ = NULL;
+ guint _tmp7_ = 0U;
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _added_proxy_it;
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 3655 "Commands.c"
+ }
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _added_proxy_it;
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ added_proxy = (SourceProxy*) _tmp5_;
+#line 172 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = added_proxy;
+#line 172 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_SOURCE_PROXY, &_tmp7_, NULL, FALSE);
+#line 172 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp6_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp7_, 0, NULL, (GCallback) _simple_proxyable_command_on_proxy_broken_source_proxy_broken, self);
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (added_proxy);
+#line 3671 "Commands.c"
+ }
+#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_added_proxy_it);
+#line 3675 "Commands.c"
+ }
+#line 174 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = self->priv->proxies;
+#line 174 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_clear (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 3681 "Commands.c"
+}
+
+
+static void simple_proxyable_command_on_proxy_broken (SimpleProxyableCommand* self) {
+ CommandManager* _tmp0_ = NULL;
+ CommandManager* _tmp1_ = NULL;
+#line 177 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_SIMPLE_PROXYABLE_COMMAND (self));
+#line 178 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_debug ("Commands.vala:178: on_proxy_broken");
+#line 179 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 179 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 179 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp1_);
+#line 179 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp1_);
+#line 3700 "Commands.c"
+}
+
+
+static void simple_proxyable_command_class_init (SimpleProxyableCommandClass * klass) {
+#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
+ simple_proxyable_command_parent_class = g_type_class_peek_parent (klass);
+#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (SimpleProxyableCommandPrivate));
+#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = simple_proxyable_command_real_execute;
+#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->execute_on_source = simple_proxyable_command_real_execute_on_source;
+#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = simple_proxyable_command_real_undo;
+#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->undo_on_source = simple_proxyable_command_real_undo_on_source;
+#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = simple_proxyable_command_finalize;
+#line 3719 "Commands.c"
+}
+
+
+static void simple_proxyable_command_instance_init (SimpleProxyableCommand * self) {
+ GeeHashSet* _tmp0_ = NULL;
+#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = SIMPLE_PROXYABLE_COMMAND_GET_PRIVATE (self);
+#line 131 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_set_new (TYPE_SOURCE_PROXY, (GBoxedCopyFunc) source_proxy_ref, source_proxy_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 131 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->proxies = _tmp0_;
+#line 3731 "Commands.c"
+}
+
+
+static void simple_proxyable_command_finalize (GObject* obj) {
+ SimpleProxyableCommand * self;
+ SourceProxy* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SIMPLE_PROXYABLE_COMMAND, SimpleProxyableCommand);
+#line 141 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->proxy;
+#line 141 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_SOURCE_PROXY, &_tmp1_, NULL, FALSE);
+#line 141 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp0_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _simple_proxyable_command_on_proxy_broken_source_proxy_broken, self);
+#line 142 "/home/jens/Source/shotwell/src/Commands.vala"
+ simple_proxyable_command_clear_added_proxies (self);
+#line 130 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (self->priv->proxy);
+#line 131 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->proxies);
+#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (simple_proxyable_command_parent_class)->finalize (obj);
+#line 3755 "Commands.c"
+}
+
+
+GType simple_proxyable_command_get_type (void) {
+ static volatile gsize simple_proxyable_command_type_id__volatile = 0;
+ if (g_once_init_enter (&simple_proxyable_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SimpleProxyableCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) simple_proxyable_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SimpleProxyableCommand), 0, (GInstanceInitFunc) simple_proxyable_command_instance_init, NULL };
+ GType simple_proxyable_command_type_id;
+ simple_proxyable_command_type_id = g_type_register_static (TYPE_PAGE_COMMAND, "SimpleProxyableCommand", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&simple_proxyable_command_type_id__volatile, simple_proxyable_command_type_id);
+ }
+ return simple_proxyable_command_type_id__volatile;
+}
+
+
+static void _single_photo_transformation_command_on_state_broken_photo_transformation_state_broken (PhotoTransformationState* _sender, gpointer self) {
+#line 194 "/home/jens/Source/shotwell/src/Commands.vala"
+ single_photo_transformation_command_on_state_broken ((SinglePhotoTransformationCommand*) self);
+#line 3774 "Commands.c"
+}
+
+
+SinglePhotoTransformationCommand* single_photo_transformation_command_construct (GType object_type, Photo* photo, const gchar* name, const gchar* explanation) {
+ SinglePhotoTransformationCommand * self = NULL;
+ Photo* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ Photo* _tmp3_ = NULL;
+ PhotoTransformationState* _tmp4_ = NULL;
+ PhotoTransformationState* _tmp5_ = NULL;
+#line 186 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PHOTO (photo), NULL);
+#line 186 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 186 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = name;
+#line 187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = explanation;
+#line 187 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (SinglePhotoTransformationCommand*) single_data_source_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_SOURCE, DataSource), _tmp1_, _tmp2_);
+#line 189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = photo;
+#line 189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = photo_save_transformation_state (_tmp3_);
+#line 189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->state);
+#line 189 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->state = _tmp4_;
+#line 190 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->state;
+#line 190 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp5_, "broken", (GCallback) _single_photo_transformation_command_on_state_broken_photo_transformation_state_broken, self, 0);
+#line 186 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 3814 "Commands.c"
+}
+
+
+static void single_photo_transformation_command_real_undo (Command* base) {
+ SinglePhotoTransformationCommand * self;
+ DataSource* _tmp0_ = NULL;
+ PhotoTransformationState* _tmp1_ = NULL;
+#line 197 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SINGLE_PHOTO_TRANSFORMATION_COMMAND, SinglePhotoTransformationCommand);
+#line 198 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 198 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->state;
+#line 198 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_load_transformation_state (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo), _tmp1_);
+#line 3830 "Commands.c"
+}
+
+
+static void single_photo_transformation_command_on_state_broken (SinglePhotoTransformationCommand* self) {
+ CommandManager* _tmp0_ = NULL;
+ CommandManager* _tmp1_ = NULL;
+#line 201 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_SINGLE_PHOTO_TRANSFORMATION_COMMAND (self));
+#line 202 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 202 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 202 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp1_);
+#line 202 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp1_);
+#line 3847 "Commands.c"
+}
+
+
+static void single_photo_transformation_command_class_init (SinglePhotoTransformationCommandClass * klass) {
+#line 183 "/home/jens/Source/shotwell/src/Commands.vala"
+ single_photo_transformation_command_parent_class = g_type_class_peek_parent (klass);
+#line 183 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (SinglePhotoTransformationCommandPrivate));
+#line 183 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = single_photo_transformation_command_real_undo;
+#line 183 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = single_photo_transformation_command_finalize;
+#line 3860 "Commands.c"
+}
+
+
+static void single_photo_transformation_command_instance_init (SinglePhotoTransformationCommand * self) {
+#line 183 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = SINGLE_PHOTO_TRANSFORMATION_COMMAND_GET_PRIVATE (self);
+#line 3867 "Commands.c"
+}
+
+
+static void single_photo_transformation_command_finalize (GObject* obj) {
+ SinglePhotoTransformationCommand * self;
+ PhotoTransformationState* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+#line 183 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SINGLE_PHOTO_TRANSFORMATION_COMMAND, SinglePhotoTransformationCommand);
+#line 194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->state;
+#line 194 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_PHOTO_TRANSFORMATION_STATE, &_tmp1_, NULL, FALSE);
+#line 194 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp0_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _single_photo_transformation_command_on_state_broken_photo_transformation_state_broken, self);
+#line 184 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->state);
+#line 183 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (single_photo_transformation_command_parent_class)->finalize (obj);
+#line 3887 "Commands.c"
+}
+
+
+GType single_photo_transformation_command_get_type (void) {
+ static volatile gsize single_photo_transformation_command_type_id__volatile = 0;
+ if (g_once_init_enter (&single_photo_transformation_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SinglePhotoTransformationCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) single_photo_transformation_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SinglePhotoTransformationCommand), 0, (GInstanceInitFunc) single_photo_transformation_command_instance_init, NULL };
+ GType single_photo_transformation_command_type_id;
+ single_photo_transformation_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "SinglePhotoTransformationCommand", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&single_photo_transformation_command_type_id__volatile, single_photo_transformation_command_type_id);
+ }
+ return single_photo_transformation_command_type_id__volatile;
+}
+
+
+static void _generic_photo_transformation_command_on_state_broken_photo_transformation_state_broken (PhotoTransformationState* _sender, gpointer self) {
+#line 216 "/home/jens/Source/shotwell/src/Commands.vala"
+ generic_photo_transformation_command_on_state_broken ((GenericPhotoTransformationCommand*) self);
+#line 3906 "Commands.c"
+}
+
+
+GenericPhotoTransformationCommand* generic_photo_transformation_command_construct (GType object_type, Photo* photo, const gchar* name, const gchar* explanation) {
+ GenericPhotoTransformationCommand * self = NULL;
+ Photo* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+#line 210 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PHOTO (photo), NULL);
+#line 210 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 210 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 211 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 211 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = name;
+#line 211 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = explanation;
+#line 211 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (GenericPhotoTransformationCommand*) single_data_source_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_SOURCE, DataSource), _tmp1_, _tmp2_);
+#line 210 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 3931 "Commands.c"
+}
+
+
+static void generic_photo_transformation_command_real_execute (Command* base) {
+ GenericPhotoTransformationCommand * self;
+ Photo* photo = NULL;
+ DataSource* _tmp0_ = NULL;
+ Photo* _tmp1_ = NULL;
+ PhotoTransformationState* _tmp2_ = NULL;
+ PhotoTransformationState* _tmp3_ = NULL;
+ PhotoTransformationState* _tmp4_ = NULL;
+ PhotoTransformationState* _tmp5_ = NULL;
+#line 222 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, GenericPhotoTransformationCommand);
+#line 223 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 223 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo));
+#line 223 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo = _tmp1_;
+#line 225 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = photo_save_transformation_state (photo);
+#line 225 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->original_state);
+#line 225 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->original_state = _tmp2_;
+#line 226 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->original_state;
+#line 226 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp3_, "broken", (GCallback) _generic_photo_transformation_command_on_state_broken_photo_transformation_state_broken, self, 0);
+#line 228 "/home/jens/Source/shotwell/src/Commands.vala"
+ generic_photo_transformation_command_execute_on_photo (self, photo);
+#line 230 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = photo_save_transformation_state (photo);
+#line 230 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->transformed_state);
+#line 230 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->transformed_state = _tmp4_;
+#line 231 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->transformed_state;
+#line 231 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp5_, "broken", (GCallback) _generic_photo_transformation_command_on_state_broken_photo_transformation_state_broken, self, 0);
+#line 222 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo);
+#line 3976 "Commands.c"
+}
+
+
+static void generic_photo_transformation_command_real_execute_on_photo (GenericPhotoTransformationCommand* self, Photo* photo) {
+#line 234 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("Type `%s' does not implement abstract method `generic_photo_transformation_command_execute_on_photo'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
+#line 234 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 3985 "Commands.c"
+}
+
+
+void generic_photo_transformation_command_execute_on_photo (GenericPhotoTransformationCommand* self, Photo* photo) {
+#line 234 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_GENERIC_PHOTO_TRANSFORMATION_COMMAND (self));
+#line 234 "/home/jens/Source/shotwell/src/Commands.vala"
+ GENERIC_PHOTO_TRANSFORMATION_COMMAND_GET_CLASS (self)->execute_on_photo (self, photo);
+#line 3994 "Commands.c"
+}
+
+
+static void generic_photo_transformation_command_real_undo (Command* base) {
+ GenericPhotoTransformationCommand * self;
+ DataSource* _tmp0_ = NULL;
+ PhotoTransformationState* _tmp1_ = NULL;
+#line 236 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, GenericPhotoTransformationCommand);
+#line 238 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 238 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->original_state;
+#line 238 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_load_transformation_state (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo), _tmp1_);
+#line 4010 "Commands.c"
+}
+
+
+static void generic_photo_transformation_command_real_redo (Command* base) {
+ GenericPhotoTransformationCommand * self;
+ DataSource* _tmp0_ = NULL;
+ PhotoTransformationState* _tmp1_ = NULL;
+#line 241 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, GenericPhotoTransformationCommand);
+#line 243 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 243 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->transformed_state;
+#line 243 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_load_transformation_state (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo), _tmp1_);
+#line 4026 "Commands.c"
+}
+
+
+static gboolean generic_photo_transformation_command_real_can_compress (GenericPhotoTransformationCommand* self, Command* command) {
+ gboolean result = FALSE;
+#line 246 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_COMMAND (command), FALSE);
+#line 247 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = FALSE;
+#line 247 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 4038 "Commands.c"
+}
+
+
+gboolean generic_photo_transformation_command_can_compress (GenericPhotoTransformationCommand* self, Command* command) {
+#line 246 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_GENERIC_PHOTO_TRANSFORMATION_COMMAND (self), FALSE);
+#line 246 "/home/jens/Source/shotwell/src/Commands.vala"
+ return GENERIC_PHOTO_TRANSFORMATION_COMMAND_GET_CLASS (self)->can_compress (self, command);
+#line 4047 "Commands.c"
+}
+
+
+static gboolean generic_photo_transformation_command_real_compress (Command* base, Command* command) {
+ GenericPhotoTransformationCommand * self;
+ gboolean result = FALSE;
+ Command* _tmp0_ = NULL;
+ gboolean _tmp1_ = FALSE;
+ GenericPhotoTransformationCommand* generic = NULL;
+ Command* _tmp2_ = NULL;
+ GenericPhotoTransformationCommand* _tmp3_ = NULL;
+ GenericPhotoTransformationCommand* _tmp4_ = NULL;
+ GenericPhotoTransformationCommand* _tmp5_ = NULL;
+ DataSource* _tmp6_ = NULL;
+ DataSource* _tmp7_ = NULL;
+ GenericPhotoTransformationCommand* _tmp8_ = NULL;
+ GenericPhotoTransformationCommand* _tmp9_ = NULL;
+ PhotoTransformationState* _tmp10_ = NULL;
+ PhotoTransformationState* _tmp11_ = NULL;
+#line 250 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, GenericPhotoTransformationCommand);
+#line 250 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_COMMAND (command), FALSE);
+#line 251 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command;
+#line 251 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = generic_photo_transformation_command_can_compress (self, _tmp0_);
+#line 251 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp1_) {
+#line 252 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = FALSE;
+#line 252 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 4081 "Commands.c"
+ }
+#line 254 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = command;
+#line 254 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND) ? ((GenericPhotoTransformationCommand*) _tmp2_) : NULL);
+#line 254 "/home/jens/Source/shotwell/src/Commands.vala"
+ generic = _tmp3_;
+#line 255 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = generic;
+#line 255 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_ == NULL) {
+#line 256 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = FALSE;
+#line 256 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (generic);
+#line 256 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 4099 "Commands.c"
+ }
+#line 258 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = generic;
+#line 258 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 258 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 258 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp6_ != _tmp7_) {
+#line 259 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = FALSE;
+#line 259 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (generic);
+#line 259 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 4115 "Commands.c"
+ }
+#line 262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = generic;
+#line 262 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_execute (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_COMMAND, Command));
+#line 265 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = generic;
+#line 265 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_->priv->transformed_state;
+#line 265 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _g_object_ref0 (_tmp10_);
+#line 265 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->transformed_state);
+#line 265 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->transformed_state = _tmp11_;
+#line 267 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = TRUE;
+#line 267 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (generic);
+#line 267 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 4137 "Commands.c"
+}
+
+
+static void generic_photo_transformation_command_on_state_broken (GenericPhotoTransformationCommand* self) {
+ CommandManager* _tmp0_ = NULL;
+ CommandManager* _tmp1_ = NULL;
+#line 270 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_GENERIC_PHOTO_TRANSFORMATION_COMMAND (self));
+#line 271 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 271 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 271 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp1_);
+#line 271 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp1_);
+#line 4154 "Commands.c"
+}
+
+
+static void generic_photo_transformation_command_class_init (GenericPhotoTransformationCommandClass * klass) {
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ generic_photo_transformation_command_parent_class = g_type_class_peek_parent (klass);
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (GenericPhotoTransformationCommandPrivate));
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = generic_photo_transformation_command_real_execute;
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((GenericPhotoTransformationCommandClass *) klass)->execute_on_photo = generic_photo_transformation_command_real_execute_on_photo;
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = generic_photo_transformation_command_real_undo;
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->redo = generic_photo_transformation_command_real_redo;
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((GenericPhotoTransformationCommandClass *) klass)->can_compress = generic_photo_transformation_command_real_can_compress;
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->compress = generic_photo_transformation_command_real_compress;
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = generic_photo_transformation_command_finalize;
+#line 4177 "Commands.c"
+}
+
+
+static void generic_photo_transformation_command_instance_init (GenericPhotoTransformationCommand * self) {
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = GENERIC_PHOTO_TRANSFORMATION_COMMAND_GET_PRIVATE (self);
+#line 207 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->original_state = NULL;
+#line 208 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->transformed_state = NULL;
+#line 4188 "Commands.c"
+}
+
+
+static void generic_photo_transformation_command_finalize (GObject* obj) {
+ GenericPhotoTransformationCommand * self;
+ PhotoTransformationState* _tmp0_ = NULL;
+ PhotoTransformationState* _tmp3_ = NULL;
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, GenericPhotoTransformationCommand);
+#line 215 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->original_state;
+#line 215 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_ != NULL) {
+#line 4202 "Commands.c"
+ PhotoTransformationState* _tmp1_ = NULL;
+ guint _tmp2_ = 0U;
+#line 216 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->original_state;
+#line 216 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_PHOTO_TRANSFORMATION_STATE, &_tmp2_, NULL, FALSE);
+#line 216 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp1_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp2_, 0, NULL, (GCallback) _generic_photo_transformation_command_on_state_broken_photo_transformation_state_broken, self);
+#line 4211 "Commands.c"
+ }
+#line 218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->transformed_state;
+#line 218 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_ != NULL) {
+#line 4217 "Commands.c"
+ PhotoTransformationState* _tmp4_ = NULL;
+ guint _tmp5_ = 0U;
+#line 219 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->transformed_state;
+#line 219 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_PHOTO_TRANSFORMATION_STATE, &_tmp5_, NULL, FALSE);
+#line 219 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp4_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp5_, 0, NULL, (GCallback) _generic_photo_transformation_command_on_state_broken_photo_transformation_state_broken, self);
+#line 4226 "Commands.c"
+ }
+#line 207 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->original_state);
+#line 208 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->transformed_state);
+#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (generic_photo_transformation_command_parent_class)->finalize (obj);
+#line 4234 "Commands.c"
+}
+
+
+GType generic_photo_transformation_command_get_type (void) {
+ static volatile gsize generic_photo_transformation_command_type_id__volatile = 0;
+ if (g_once_init_enter (&generic_photo_transformation_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (GenericPhotoTransformationCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) generic_photo_transformation_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GenericPhotoTransformationCommand), 0, (GInstanceInitFunc) generic_photo_transformation_command_instance_init, NULL };
+ GType generic_photo_transformation_command_type_id;
+ generic_photo_transformation_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "GenericPhotoTransformationCommand", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&generic_photo_transformation_command_type_id__volatile, generic_photo_transformation_command_type_id);
+ }
+ return generic_photo_transformation_command_type_id__volatile;
+}
+
+
+static void _multiple_data_source_command_on_source_destroyed_source_collection_item_destroyed (SourceCollection* _sender, DataSource* source, gpointer self) {
+#line 309 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_command_on_source_destroyed ((MultipleDataSourceCommand*) self, source);
+#line 4253 "Commands.c"
+}
+
+
+MultipleDataSourceCommand* multiple_data_source_command_construct (GType object_type, GeeIterable* iter, const gchar* progress_text, const gchar* undo_progress_text, const gchar* name, const gchar* explanation) {
+ MultipleDataSourceCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ gchar* _tmp3_ = NULL;
+ const gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+#line 285 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 285 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (progress_text != NULL, NULL);
+#line 285 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (undo_progress_text != NULL, NULL);
+#line 285 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 285 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 287 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = name;
+#line 287 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = explanation;
+#line 287 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (MultipleDataSourceCommand*) page_command_construct (object_type, _tmp0_, _tmp1_);
+#line 289 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = progress_text;
+#line 289 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = g_strdup (_tmp2_);
+#line 289 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->progress_text);
+#line 289 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->progress_text = _tmp3_;
+#line 290 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = undo_progress_text;
+#line 290 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = g_strdup (_tmp4_);
+#line 290 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->undo_progress_text);
+#line 290 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->undo_progress_text = _tmp5_;
+#line 4297 "Commands.c"
+ {
+ GeeIterator* _view_it = NULL;
+ GeeIterable* _tmp6_ = NULL;
+ GeeIterator* _tmp7_ = NULL;
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = iter;
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_iterable_iterator (_tmp6_);
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _view_it = _tmp7_;
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 4310 "Commands.c"
+ GeeIterator* _tmp8_ = NULL;
+ gboolean _tmp9_ = FALSE;
+ DataView* view = NULL;
+ GeeIterator* _tmp10_ = NULL;
+ gpointer _tmp11_ = NULL;
+ DataSource* source = NULL;
+ DataView* _tmp12_ = NULL;
+ DataSource* _tmp13_ = NULL;
+ SourceCollection* collection = NULL;
+ DataSource* _tmp14_ = NULL;
+ DataCollection* _tmp15_ = NULL;
+ SourceCollection* _tmp16_ = NULL;
+ GeeArrayList* _tmp19_ = NULL;
+ DataSource* _tmp20_ = NULL;
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _view_it;
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_iterator_next (_tmp8_);
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp9_) {
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 4333 "Commands.c"
+ }
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _view_it;
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = gee_iterator_get (_tmp10_);
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ view = (DataView*) _tmp11_;
+#line 293 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = view;
+#line 293 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = data_view_get_source (_tmp12_);
+#line 293 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = _tmp13_;
+#line 294 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = source;
+#line 294 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = data_object_get_membership (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, TYPE_DATA_OBJECT, DataObject));
+#line 294 "/home/jens/Source/shotwell/src/Commands.vala"
+ collection = G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, TYPE_SOURCE_COLLECTION, SourceCollection);
+#line 296 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = collection;
+#line 296 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp16_ != NULL) {
+#line 4357 "Commands.c"
+ GeeHashSet* _tmp17_ = NULL;
+ SourceCollection* _tmp18_ = NULL;
+#line 297 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = self->priv->hooked_collections;
+#line 297 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = collection;
+#line 297 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp18_);
+#line 4366 "Commands.c"
+ }
+#line 299 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = self->source_list;
+#line 299 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = source;
+#line 299 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp20_);
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (collection);
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (view);
+#line 4380 "Commands.c"
+ }
+#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_view_it);
+#line 4384 "Commands.c"
+ }
+ {
+ GeeIterator* _current_collection_it = NULL;
+ GeeHashSet* _tmp21_ = NULL;
+ GeeIterator* _tmp22_ = NULL;
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = self->priv->hooked_collections;
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _current_collection_it = _tmp22_;
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 4398 "Commands.c"
+ GeeIterator* _tmp23_ = NULL;
+ gboolean _tmp24_ = FALSE;
+ SourceCollection* current_collection = NULL;
+ GeeIterator* _tmp25_ = NULL;
+ gpointer _tmp26_ = NULL;
+ SourceCollection* _tmp27_ = NULL;
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _current_collection_it;
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = gee_iterator_next (_tmp23_);
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp24_) {
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 4413 "Commands.c"
+ }
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = _current_collection_it;
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = gee_iterator_get (_tmp25_);
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_collection = (SourceCollection*) _tmp26_;
+#line 303 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = current_collection;
+#line 303 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp27_, "item-destroyed", (GCallback) _multiple_data_source_command_on_source_destroyed_source_collection_item_destroyed, self, 0);
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (current_collection);
+#line 4427 "Commands.c"
+ }
+#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_current_collection_it);
+#line 4431 "Commands.c"
+ }
+#line 285 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 4435 "Commands.c"
+}
+
+
+GeeIterable* multiple_data_source_command_get_sources (MultipleDataSourceCommand* self) {
+ GeeIterable* result = NULL;
+ GeeArrayList* _tmp0_ = NULL;
+ GeeIterable* _tmp1_ = NULL;
+#line 313 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_MULTIPLE_DATA_SOURCE_COMMAND (self), NULL);
+#line 314 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->source_list;
+#line 314 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 314 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = _tmp1_;
+#line 314 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 4453 "Commands.c"
+}
+
+
+gint multiple_data_source_command_get_source_count (MultipleDataSourceCommand* self) {
+ gint result = 0;
+ GeeArrayList* _tmp0_ = NULL;
+ gint _tmp1_ = 0;
+ gint _tmp2_ = 0;
+#line 317 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_MULTIPLE_DATA_SOURCE_COMMAND (self), 0);
+#line 318 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->source_list;
+#line 318 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 318 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 318 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = _tmp2_;
+#line 318 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 4474 "Commands.c"
+}
+
+
+static void multiple_data_source_command_on_source_destroyed (MultipleDataSourceCommand* self, DataSource* source) {
+ GeeArrayList* _tmp0_ = NULL;
+ DataSource* _tmp1_ = NULL;
+ gboolean _tmp2_ = FALSE;
+#line 321 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MULTIPLE_DATA_SOURCE_COMMAND (self));
+#line 321 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 324 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->source_list;
+#line 324 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = source;
+#line 324 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = gee_abstract_collection_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp1_);
+#line 324 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_) {
+#line 4494 "Commands.c"
+ CommandManager* _tmp3_ = NULL;
+ CommandManager* _tmp4_ = NULL;
+#line 325 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 325 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 325 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp4_);
+#line 325 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp4_);
+#line 4505 "Commands.c"
+ }
+}
+
+
+static void multiple_data_source_command_real_execute (Command* base) {
+ MultipleDataSourceCommand * self;
+ GeeArrayList* _tmp0_ = NULL;
+ GeeArrayList* _tmp1_ = NULL;
+ GeeArrayList* _tmp2_ = NULL;
+#line 328 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand);
+#line 329 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->acted_upon;
+#line 329 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_clear (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 331 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_command_start_transaction (self);
+#line 332 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->source_list;
+#line 332 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->acted_upon;
+#line 332 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_command_execute_all (self, TRUE, TRUE, _tmp1_, _tmp2_);
+#line 333 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_command_commit_transaction (self);
+#line 4531 "Commands.c"
+}
+
+
+static void multiple_data_source_command_real_execute_on_source (MultipleDataSourceCommand* self, DataSource* source) {
+#line 336 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("Type `%s' does not implement abstract method `multiple_data_source_command_execute_on_source'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
+#line 336 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 4540 "Commands.c"
+}
+
+
+void multiple_data_source_command_execute_on_source (MultipleDataSourceCommand* self, DataSource* source) {
+#line 336 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MULTIPLE_DATA_SOURCE_COMMAND (self));
+#line 336 "/home/jens/Source/shotwell/src/Commands.vala"
+ MULTIPLE_DATA_SOURCE_COMMAND_GET_CLASS (self)->execute_on_source (self, source);
+#line 4549 "Commands.c"
+}
+
+
+static void multiple_data_source_command_real_undo (Command* base) {
+ MultipleDataSourceCommand * self;
+ GeeArrayList* _tmp0_ = NULL;
+ gint _tmp1_ = 0;
+ gint _tmp2_ = 0;
+#line 338 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand);
+#line 339 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->acted_upon;
+#line 339 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 339 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 339 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ > 0) {
+#line 4568 "Commands.c"
+ GeeArrayList* _tmp3_ = NULL;
+ GeeArrayList* _tmp4_ = NULL;
+#line 340 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_command_start_transaction (self);
+#line 341 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->acted_upon;
+#line 341 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_command_execute_all (self, FALSE, FALSE, _tmp3_, NULL);
+#line 342 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_command_commit_transaction (self);
+#line 344 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->acted_upon;
+#line 344 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_clear (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 4583 "Commands.c"
+ }
+}
+
+
+static void multiple_data_source_command_real_undo_on_source (MultipleDataSourceCommand* self, DataSource* source) {
+#line 348 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("Type `%s' does not implement abstract method `multiple_data_source_command_undo_on_source'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
+#line 348 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 4593 "Commands.c"
+}
+
+
+void multiple_data_source_command_undo_on_source (MultipleDataSourceCommand* self, DataSource* source) {
+#line 348 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MULTIPLE_DATA_SOURCE_COMMAND (self));
+#line 348 "/home/jens/Source/shotwell/src/Commands.vala"
+ MULTIPLE_DATA_SOURCE_COMMAND_GET_CLASS (self)->undo_on_source (self, source);
+#line 4602 "Commands.c"
+}
+
+
+static gpointer _data_collection_ref0 (gpointer self) {
+#line 352 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self ? data_collection_ref (self) : NULL;
+#line 4609 "Commands.c"
+}
+
+
+static void multiple_data_source_command_start_transaction (MultipleDataSourceCommand* self) {
+#line 350 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MULTIPLE_DATA_SOURCE_COMMAND (self));
+#line 4616 "Commands.c"
+ {
+ GeeIterator* _sources_it = NULL;
+ GeeHashSet* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->hooked_collections;
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _sources_it = _tmp1_;
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 4629 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ SourceCollection* sources = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ MediaSourceCollection* media_collection = NULL;
+ SourceCollection* _tmp6_ = NULL;
+ MediaSourceCollection* _tmp7_ = NULL;
+ MediaSourceCollection* _tmp8_ = NULL;
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _sources_it;
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 4647 "Commands.c"
+ }
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _sources_it;
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ sources = (SourceCollection*) _tmp5_;
+#line 352 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = sources;
+#line 352 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _data_collection_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, TYPE_MEDIA_SOURCE_COLLECTION) ? ((MediaSourceCollection*) _tmp6_) : NULL);
+#line 352 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_collection = _tmp7_;
+#line 353 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = media_collection;
+#line 353 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp8_ != NULL) {
+#line 4665 "Commands.c"
+ MediaSourceCollection* _tmp9_ = NULL;
+ TransactionController* _tmp10_ = NULL;
+ TransactionController* _tmp11_ = NULL;
+#line 354 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = media_collection;
+#line 354 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = media_source_collection_get_transaction_controller (_tmp9_);
+#line 354 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _tmp10_;
+#line 354 "/home/jens/Source/shotwell/src/Commands.vala"
+ transaction_controller_begin (_tmp11_);
+#line 4677 "Commands.c"
+ }
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (media_collection);
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (sources);
+#line 4683 "Commands.c"
+ }
+#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_sources_it);
+#line 4687 "Commands.c"
+ }
+}
+
+
+static void multiple_data_source_command_commit_transaction (MultipleDataSourceCommand* self) {
+#line 358 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MULTIPLE_DATA_SOURCE_COMMAND (self));
+#line 4695 "Commands.c"
+ {
+ GeeIterator* _sources_it = NULL;
+ GeeHashSet* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->hooked_collections;
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _sources_it = _tmp1_;
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 4708 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ SourceCollection* sources = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ MediaSourceCollection* media_collection = NULL;
+ SourceCollection* _tmp6_ = NULL;
+ MediaSourceCollection* _tmp7_ = NULL;
+ MediaSourceCollection* _tmp8_ = NULL;
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _sources_it;
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 4726 "Commands.c"
+ }
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _sources_it;
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ sources = (SourceCollection*) _tmp5_;
+#line 360 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = sources;
+#line 360 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _data_collection_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, TYPE_MEDIA_SOURCE_COLLECTION) ? ((MediaSourceCollection*) _tmp6_) : NULL);
+#line 360 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_collection = _tmp7_;
+#line 361 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = media_collection;
+#line 361 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp8_ != NULL) {
+#line 4744 "Commands.c"
+ MediaSourceCollection* _tmp9_ = NULL;
+ TransactionController* _tmp10_ = NULL;
+ TransactionController* _tmp11_ = NULL;
+#line 362 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = media_collection;
+#line 362 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = media_source_collection_get_transaction_controller (_tmp9_);
+#line 362 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _tmp10_;
+#line 362 "/home/jens/Source/shotwell/src/Commands.vala"
+ transaction_controller_commit (_tmp11_);
+#line 4756 "Commands.c"
+ }
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (media_collection);
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (sources);
+#line 4762 "Commands.c"
+ }
+#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_sources_it);
+#line 4766 "Commands.c"
+ }
+}
+
+
+static void multiple_data_source_command_execute_all (MultipleDataSourceCommand* self, gboolean exec, gboolean can_cancel, GeeArrayList* todo, GeeArrayList* completed) {
+ AppWindow* _tmp0_ = NULL;
+ AppWindow* _tmp1_ = NULL;
+ gint count = 0;
+ gint total = 0;
+ GeeArrayList* _tmp2_ = NULL;
+ gint _tmp3_ = 0;
+ gint _tmp4_ = 0;
+ gint two_percent = 0;
+ gint _tmp5_ = 0;
+ gint _tmp6_ = 0;
+ const gchar* _tmp7_ = NULL;
+ gboolean _tmp8_ = FALSE;
+ gchar* text = NULL;
+ gchar* _tmp11_ = NULL;
+ GCancellable* cancellable = NULL;
+ ProgressDialog* progress = NULL;
+ gint _tmp12_ = 0;
+ ProgressDialog* _tmp50_ = NULL;
+ AppWindow* _tmp52_ = NULL;
+ AppWindow* _tmp53_ = NULL;
+#line 366 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MULTIPLE_DATA_SOURCE_COMMAND (self));
+#line 366 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_ARRAY_LIST (todo));
+#line 366 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail ((completed == NULL) || GEE_IS_ARRAY_LIST (completed));
+#line 368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = app_window_get_instance ();
+#line 368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 368 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_busy_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_PAGE_WINDOW, PageWindow));
+#line 368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp1_);
+#line 370 "/home/jens/Source/shotwell/src/Commands.vala"
+ count = 0;
+#line 371 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = todo;
+#line 371 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 371 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 371 "/home/jens/Source/shotwell/src/Commands.vala"
+ total = _tmp4_;
+#line 372 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = total;
+#line 372 "/home/jens/Source/shotwell/src/Commands.vala"
+ two_percent = (gint) (((gdouble) _tmp5_) / 50.0);
+#line 373 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = two_percent;
+#line 373 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp6_ <= 0) {
+#line 374 "/home/jens/Source/shotwell/src/Commands.vala"
+ two_percent = 1;
+#line 4826 "Commands.c"
+ }
+#line 376 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = exec;
+#line 376 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp8_) {
+#line 4832 "Commands.c"
+ const gchar* _tmp9_ = NULL;
+#line 376 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->priv->progress_text;
+#line 376 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _tmp9_;
+#line 4838 "Commands.c"
+ } else {
+ const gchar* _tmp10_ = NULL;
+#line 376 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = self->priv->undo_progress_text;
+#line 376 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _tmp10_;
+#line 4845 "Commands.c"
+ }
+#line 376 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = g_strdup (_tmp7_);
+#line 376 "/home/jens/Source/shotwell/src/Commands.vala"
+ text = _tmp11_;
+#line 378 "/home/jens/Source/shotwell/src/Commands.vala"
+ cancellable = NULL;
+#line 379 "/home/jens/Source/shotwell/src/Commands.vala"
+ progress = NULL;
+#line 380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = total;
+#line 380 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp12_ >= MULTIPLE_DATA_SOURCE_COMMAND_MIN_OPS_FOR_PROGRESS_WINDOW) {
+#line 4859 "Commands.c"
+ GCancellable* _tmp13_ = NULL;
+ gboolean _tmp14_ = FALSE;
+ GCancellable* _tmp16_ = NULL;
+ AppWindow* _tmp17_ = NULL;
+ AppWindow* _tmp18_ = NULL;
+ const gchar* _tmp19_ = NULL;
+ GCancellable* _tmp20_ = NULL;
+ ProgressDialog* _tmp21_ = NULL;
+#line 381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = can_cancel;
+#line 381 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp14_) {
+#line 4872 "Commands.c"
+ GCancellable* _tmp15_ = NULL;
+#line 381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = g_cancellable_new ();
+#line 381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp13_);
+#line 381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _tmp15_;
+#line 4880 "Commands.c"
+ } else {
+#line 381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp13_);
+#line 381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = NULL;
+#line 4886 "Commands.c"
+ }
+#line 381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _g_object_ref0 (_tmp13_);
+#line 381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (cancellable);
+#line 381 "/home/jens/Source/shotwell/src/Commands.vala"
+ cancellable = _tmp16_;
+#line 382 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = app_window_get_instance ();
+#line 382 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = _tmp17_;
+#line 382 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = text;
+#line 382 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = cancellable;
+#line 382 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = progress_dialog_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, gtk_window_get_type (), GtkWindow), _tmp19_, _tmp20_);
+#line 382 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_object_ref_sink (_tmp21_);
+#line 382 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (progress);
+#line 382 "/home/jens/Source/shotwell/src/Commands.vala"
+ progress = _tmp21_;
+#line 382 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp18_);
+#line 380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp13_);
+#line 4914 "Commands.c"
+ }
+ {
+ GeeArrayList* _source_list = NULL;
+ GeeArrayList* _tmp22_ = NULL;
+ GeeArrayList* _tmp23_ = NULL;
+ gint _source_size = 0;
+ GeeArrayList* _tmp24_ = NULL;
+ gint _tmp25_ = 0;
+ gint _tmp26_ = 0;
+ gint _source_index = 0;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = todo;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _g_object_ref0 (_tmp22_);
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_list = _tmp23_;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _source_list;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _tmp25_;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_size = _tmp26_;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_index = -1;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 4943 "Commands.c"
+ gint _tmp27_ = 0;
+ gint _tmp28_ = 0;
+ gint _tmp29_ = 0;
+ DataSource* source = NULL;
+ GeeArrayList* _tmp30_ = NULL;
+ gint _tmp31_ = 0;
+ gpointer _tmp32_ = NULL;
+ gboolean _tmp33_ = FALSE;
+ GeeArrayList* _tmp36_ = NULL;
+ ProgressDialog* _tmp39_ = NULL;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = _source_index;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_index = _tmp27_ + 1;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = _source_index;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = _source_size;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp28_ < _tmp29_)) {
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 4966 "Commands.c"
+ }
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = _source_list;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = _source_index;
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp31_);
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp32_;
+#line 386 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = exec;
+#line 386 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp33_) {
+#line 4980 "Commands.c"
+ DataSource* _tmp34_ = NULL;
+#line 387 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = source;
+#line 387 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_command_execute_on_source (self, _tmp34_);
+#line 4986 "Commands.c"
+ } else {
+ DataSource* _tmp35_ = NULL;
+#line 389 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = source;
+#line 389 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_command_undo_on_source (self, _tmp35_);
+#line 4993 "Commands.c"
+ }
+#line 391 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = completed;
+#line 391 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp36_ != NULL) {
+#line 4999 "Commands.c"
+ GeeArrayList* _tmp37_ = NULL;
+ DataSource* _tmp38_ = NULL;
+#line 392 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = completed;
+#line 392 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = source;
+#line 392 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp38_);
+#line 5008 "Commands.c"
+ }
+#line 394 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = progress;
+#line 394 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp39_ != NULL) {
+#line 5014 "Commands.c"
+ gint _tmp40_ = 0;
+ gint _tmp41_ = 0;
+ gint _tmp42_ = 0;
+ gboolean _tmp46_ = FALSE;
+ GCancellable* _tmp47_ = NULL;
+#line 395 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = count;
+#line 395 "/home/jens/Source/shotwell/src/Commands.vala"
+ count = _tmp40_ + 1;
+#line 395 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = count;
+#line 395 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = two_percent;
+#line 395 "/home/jens/Source/shotwell/src/Commands.vala"
+ if ((_tmp41_ % _tmp42_) == 0) {
+#line 5030 "Commands.c"
+ ProgressDialog* _tmp43_ = NULL;
+ gint _tmp44_ = 0;
+ gint _tmp45_ = 0;
+#line 396 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = progress;
+#line 396 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = count;
+#line 396 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = total;
+#line 396 "/home/jens/Source/shotwell/src/Commands.vala"
+ progress_dialog_set_fraction (_tmp43_, _tmp44_, _tmp45_);
+#line 397 "/home/jens/Source/shotwell/src/Commands.vala"
+ spin_event_loop ();
+#line 5044 "Commands.c"
+ }
+#line 400 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp47_ = cancellable;
+#line 400 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp47_ != NULL) {
+#line 5050 "Commands.c"
+ GCancellable* _tmp48_ = NULL;
+ gboolean _tmp49_ = FALSE;
+#line 400 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp48_ = cancellable;
+#line 400 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp49_ = g_cancellable_is_cancelled (_tmp48_);
+#line 400 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp46_ = _tmp49_;
+#line 5059 "Commands.c"
+ } else {
+#line 400 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp46_ = FALSE;
+#line 5063 "Commands.c"
+ }
+#line 400 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp46_) {
+#line 401 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 401 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 5071 "Commands.c"
+ }
+ }
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 5076 "Commands.c"
+ }
+#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_list);
+#line 5080 "Commands.c"
+ }
+#line 405 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp50_ = progress;
+#line 405 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp50_ != NULL) {
+#line 5086 "Commands.c"
+ ProgressDialog* _tmp51_ = NULL;
+#line 406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp51_ = progress;
+#line 406 "/home/jens/Source/shotwell/src/Commands.vala"
+ progress_dialog_close (_tmp51_);
+#line 5092 "Commands.c"
+ }
+#line 408 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp52_ = app_window_get_instance ();
+#line 408 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp53_ = _tmp52_;
+#line 408 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_normal_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp53_, TYPE_PAGE_WINDOW, PageWindow));
+#line 408 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp53_);
+#line 366 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (progress);
+#line 366 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (cancellable);
+#line 366 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (text);
+#line 5108 "Commands.c"
+}
+
+
+static void multiple_data_source_command_class_init (MultipleDataSourceCommandClass * klass) {
+#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_command_parent_class = g_type_class_peek_parent (klass);
+#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (MultipleDataSourceCommandPrivate));
+#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = multiple_data_source_command_real_execute;
+#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->execute_on_source = multiple_data_source_command_real_execute_on_source;
+#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = multiple_data_source_command_real_undo;
+#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->undo_on_source = multiple_data_source_command_real_undo_on_source;
+#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = multiple_data_source_command_finalize;
+#line 5127 "Commands.c"
+}
+
+
+static void multiple_data_source_command_instance_init (MultipleDataSourceCommand * self) {
+ GeeArrayList* _tmp0_ = NULL;
+ GeeArrayList* _tmp1_ = NULL;
+ GeeHashSet* _tmp2_ = NULL;
+#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = MULTIPLE_DATA_SOURCE_COMMAND_GET_PRIVATE (self);
+#line 278 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_array_list_new (TYPE_DATA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+#line 278 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->source_list = _tmp0_;
+#line 282 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_array_list_new (TYPE_DATA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+#line 282 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->acted_upon = _tmp1_;
+#line 283 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = gee_hash_set_new (TYPE_SOURCE_COLLECTION, (GBoxedCopyFunc) data_collection_ref, data_collection_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 283 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->hooked_collections = _tmp2_;
+#line 5149 "Commands.c"
+}
+
+
+static void multiple_data_source_command_finalize (GObject* obj) {
+ MultipleDataSourceCommand * self;
+#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand);
+#line 5157 "Commands.c"
+ {
+ GeeIterator* _current_collection_it = NULL;
+ GeeHashSet* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->hooked_collections;
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _current_collection_it = _tmp1_;
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 5170 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ SourceCollection* current_collection = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ SourceCollection* _tmp6_ = NULL;
+ guint _tmp7_ = 0U;
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _current_collection_it;
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 5186 "Commands.c"
+ }
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _current_collection_it;
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_collection = (SourceCollection*) _tmp5_;
+#line 309 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = current_collection;
+#line 309 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("item-destroyed", TYPE_SOURCE_COLLECTION, &_tmp7_, NULL, FALSE);
+#line 309 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp6_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp7_, 0, NULL, (GCallback) _multiple_data_source_command_on_source_destroyed_source_collection_item_destroyed, self);
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (current_collection);
+#line 5202 "Commands.c"
+ }
+#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_current_collection_it);
+#line 5206 "Commands.c"
+ }
+#line 278 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->source_list);
+#line 280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->progress_text);
+#line 281 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->undo_progress_text);
+#line 282 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->acted_upon);
+#line 283 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->hooked_collections);
+#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (multiple_data_source_command_parent_class)->finalize (obj);
+#line 5220 "Commands.c"
+}
+
+
+GType multiple_data_source_command_get_type (void) {
+ static volatile gsize multiple_data_source_command_type_id__volatile = 0;
+ if (g_once_init_enter (&multiple_data_source_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (MultipleDataSourceCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) multiple_data_source_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MultipleDataSourceCommand), 0, (GInstanceInitFunc) multiple_data_source_command_instance_init, NULL };
+ GType multiple_data_source_command_type_id;
+ multiple_data_source_command_type_id = g_type_register_static (TYPE_PAGE_COMMAND, "MultipleDataSourceCommand", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&multiple_data_source_command_type_id__volatile, multiple_data_source_command_type_id);
+ }
+ return multiple_data_source_command_type_id__volatile;
+}
+
+
+static void _multiple_data_source_at_once_command_on_sources_destroyed_source_collection_items_destroyed (SourceCollection* _sender, GeeCollection* destroyed, gpointer self) {
+#line 435 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_at_once_command_on_sources_destroyed ((MultipleDataSourceAtOnceCommand*) self, destroyed);
+#line 5239 "Commands.c"
+}
+
+
+MultipleDataSourceAtOnceCommand* multiple_data_source_at_once_command_construct (GType object_type, GeeCollection* sources, const gchar* name, const gchar* explanation) {
+ MultipleDataSourceAtOnceCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ GeeHashSet* _tmp2_ = NULL;
+ GeeCollection* _tmp3_ = NULL;
+#line 417 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_COLLECTION (sources), NULL);
+#line 417 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 417 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 419 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = name;
+#line 419 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = explanation;
+#line 419 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (MultipleDataSourceAtOnceCommand*) page_command_construct (object_type, _tmp0_, _tmp1_);
+#line 421 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->sources;
+#line 421 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = sources;
+#line 421 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection), _tmp3_);
+#line 5267 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeHashSet* _tmp4_ = NULL;
+ GeeIterator* _tmp5_ = NULL;
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->sources;
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp5_;
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 5280 "Commands.c"
+ GeeIterator* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+ DataSource* source = NULL;
+ GeeIterator* _tmp8_ = NULL;
+ gpointer _tmp9_ = NULL;
+ SourceCollection* membership = NULL;
+ DataSource* _tmp10_ = NULL;
+ DataCollection* _tmp11_ = NULL;
+ SourceCollection* _tmp12_ = NULL;
+ SourceCollection* _tmp13_ = NULL;
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _source_it;
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_iterator_next (_tmp6_);
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp7_) {
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 5299 "Commands.c"
+ }
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _source_it;
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_iterator_get (_tmp8_);
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp9_;
+#line 424 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = source;
+#line 424 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = data_object_get_membership (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, TYPE_DATA_OBJECT, DataObject));
+#line 424 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp11_, TYPE_SOURCE_COLLECTION) ? ((SourceCollection*) _tmp11_) : NULL;
+#line 424 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp12_ == NULL) {
+#line 424 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (_tmp11_);
+#line 5317 "Commands.c"
+ }
+#line 424 "/home/jens/Source/shotwell/src/Commands.vala"
+ membership = _tmp12_;
+#line 425 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = membership;
+#line 425 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp13_ != NULL) {
+#line 5325 "Commands.c"
+ GeeHashSet* _tmp14_ = NULL;
+ SourceCollection* _tmp15_ = NULL;
+#line 426 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = self->priv->hooked_collections;
+#line 426 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = membership;
+#line 426 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp15_);
+#line 5334 "Commands.c"
+ }
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (membership);
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 5340 "Commands.c"
+ }
+#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 5344 "Commands.c"
+ }
+ {
+ GeeIterator* _source_collection_it = NULL;
+ GeeHashSet* _tmp16_ = NULL;
+ GeeIterator* _tmp17_ = NULL;
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = self->priv->hooked_collections;
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_collection_it = _tmp17_;
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 5358 "Commands.c"
+ GeeIterator* _tmp18_ = NULL;
+ gboolean _tmp19_ = FALSE;
+ SourceCollection* source_collection = NULL;
+ GeeIterator* _tmp20_ = NULL;
+ gpointer _tmp21_ = NULL;
+ SourceCollection* _tmp22_ = NULL;
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = _source_collection_it;
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = gee_iterator_next (_tmp18_);
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp19_) {
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 5373 "Commands.c"
+ }
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = _source_collection_it;
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = gee_iterator_get (_tmp20_);
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ source_collection = (SourceCollection*) _tmp21_;
+#line 430 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = source_collection;
+#line 430 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp22_, "items-destroyed", (GCallback) _multiple_data_source_at_once_command_on_sources_destroyed_source_collection_items_destroyed, self, 0);
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (source_collection);
+#line 5387 "Commands.c"
+ }
+#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_collection_it);
+#line 5391 "Commands.c"
+ }
+#line 417 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 5395 "Commands.c"
+}
+
+
+static void multiple_data_source_at_once_command_real_execute (Command* base) {
+ MultipleDataSourceAtOnceCommand * self;
+ AppWindow* _tmp0_ = NULL;
+ AppWindow* _tmp1_ = NULL;
+ MediaCollectionRegistry* _tmp2_ = NULL;
+ MediaCollectionRegistry* _tmp3_ = NULL;
+ GeeHashSet* _tmp4_ = NULL;
+ MediaCollectionRegistry* _tmp5_ = NULL;
+ MediaCollectionRegistry* _tmp6_ = NULL;
+ GError * _inner_error_ = NULL;
+#line 438 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND, MultipleDataSourceAtOnceCommand);
+#line 439 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = app_window_get_instance ();
+#line 439 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 439 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_busy_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_PAGE_WINDOW, PageWindow));
+#line 439 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp1_);
+#line 441 "/home/jens/Source/shotwell/src/Commands.vala"
+ database_table_begin_transaction ();
+#line 442 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = media_collection_registry_get_instance ();
+#line 442 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 442 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_collection_registry_freeze_all (_tmp3_);
+#line 442 "/home/jens/Source/shotwell/src/Commands.vala"
+ _media_collection_registry_unref0 (_tmp3_);
+#line 444 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->sources;
+#line 444 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_at_once_command_execute_on_all (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 446 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = media_collection_registry_get_instance ();
+#line 446 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 446 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_collection_registry_thaw_all (_tmp6_);
+#line 446 "/home/jens/Source/shotwell/src/Commands.vala"
+ _media_collection_registry_unref0 (_tmp6_);
+#line 5441 "Commands.c"
+ {
+#line 448 "/home/jens/Source/shotwell/src/Commands.vala"
+ database_table_commit_transaction (&_inner_error_);
+#line 448 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 448 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_inner_error_->domain == DATABASE_ERROR) {
+#line 5449 "Commands.c"
+ goto __catch444_database_error;
+ }
+ {
+ AppWindow* _tmp7_ = NULL;
+ AppWindow* _tmp8_ = NULL;
+#line 452 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = app_window_get_instance ();
+#line 452 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tmp7_;
+#line 452 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_normal_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_PAGE_WINDOW, PageWindow));
+#line 452 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp8_);
+#line 5463 "Commands.c"
+ }
+#line 448 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 448 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_clear_error (&_inner_error_);
+#line 448 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 5471 "Commands.c"
+ }
+ }
+ goto __finally444;
+ __catch444_database_error:
+ {
+ GError* err = NULL;
+ GError* _tmp9_ = NULL;
+#line 447 "/home/jens/Source/shotwell/src/Commands.vala"
+ err = _inner_error_;
+#line 447 "/home/jens/Source/shotwell/src/Commands.vala"
+ _inner_error_ = NULL;
+#line 450 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = err;
+#line 450 "/home/jens/Source/shotwell/src/Commands.vala"
+ app_window_database_error (_tmp9_);
+#line 447 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_error_free0 (err);
+#line 5489 "Commands.c"
+ }
+ __finally444:
+ {
+ AppWindow* _tmp10_ = NULL;
+ AppWindow* _tmp11_ = NULL;
+#line 452 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = app_window_get_instance ();
+#line 452 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _tmp10_;
+#line 452 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_normal_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_PAGE_WINDOW, PageWindow));
+#line 452 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp11_);
+#line 5503 "Commands.c"
+ }
+#line 447 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 447 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 447 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_clear_error (&_inner_error_);
+#line 447 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 5513 "Commands.c"
+ }
+}
+
+
+static void multiple_data_source_at_once_command_real_execute_on_all (MultipleDataSourceAtOnceCommand* self, GeeCollection* sources) {
+#line 456 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("Type `%s' does not implement abstract method `multiple_data_source_at_once_command_execute_on_all'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
+#line 456 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 5523 "Commands.c"
+}
+
+
+void multiple_data_source_at_once_command_execute_on_all (MultipleDataSourceAtOnceCommand* self, GeeCollection* sources) {
+#line 456 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND (self));
+#line 456 "/home/jens/Source/shotwell/src/Commands.vala"
+ MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND_GET_CLASS (self)->execute_on_all (self, sources);
+#line 5532 "Commands.c"
+}
+
+
+static void multiple_data_source_at_once_command_real_undo (Command* base) {
+ MultipleDataSourceAtOnceCommand * self;
+ AppWindow* _tmp0_ = NULL;
+ AppWindow* _tmp1_ = NULL;
+ MediaCollectionRegistry* _tmp2_ = NULL;
+ MediaCollectionRegistry* _tmp3_ = NULL;
+ GeeHashSet* _tmp4_ = NULL;
+ MediaCollectionRegistry* _tmp5_ = NULL;
+ MediaCollectionRegistry* _tmp6_ = NULL;
+ GError * _inner_error_ = NULL;
+#line 458 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND, MultipleDataSourceAtOnceCommand);
+#line 459 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = app_window_get_instance ();
+#line 459 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 459 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_busy_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_PAGE_WINDOW, PageWindow));
+#line 459 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp1_);
+#line 461 "/home/jens/Source/shotwell/src/Commands.vala"
+ database_table_begin_transaction ();
+#line 462 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = media_collection_registry_get_instance ();
+#line 462 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 462 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_collection_registry_freeze_all (_tmp3_);
+#line 462 "/home/jens/Source/shotwell/src/Commands.vala"
+ _media_collection_registry_unref0 (_tmp3_);
+#line 464 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->sources;
+#line 464 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_at_once_command_undo_on_all (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 466 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = media_collection_registry_get_instance ();
+#line 466 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 466 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_collection_registry_thaw_all (_tmp6_);
+#line 466 "/home/jens/Source/shotwell/src/Commands.vala"
+ _media_collection_registry_unref0 (_tmp6_);
+#line 5578 "Commands.c"
+ {
+#line 468 "/home/jens/Source/shotwell/src/Commands.vala"
+ database_table_commit_transaction (&_inner_error_);
+#line 468 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 468 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_inner_error_->domain == DATABASE_ERROR) {
+#line 5586 "Commands.c"
+ goto __catch445_database_error;
+ }
+ {
+ AppWindow* _tmp7_ = NULL;
+ AppWindow* _tmp8_ = NULL;
+#line 472 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = app_window_get_instance ();
+#line 472 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tmp7_;
+#line 472 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_normal_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_PAGE_WINDOW, PageWindow));
+#line 472 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp8_);
+#line 5600 "Commands.c"
+ }
+#line 468 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 468 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_clear_error (&_inner_error_);
+#line 468 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 5608 "Commands.c"
+ }
+ }
+ goto __finally445;
+ __catch445_database_error:
+ {
+ GError* err = NULL;
+ GError* _tmp9_ = NULL;
+#line 467 "/home/jens/Source/shotwell/src/Commands.vala"
+ err = _inner_error_;
+#line 467 "/home/jens/Source/shotwell/src/Commands.vala"
+ _inner_error_ = NULL;
+#line 470 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = err;
+#line 470 "/home/jens/Source/shotwell/src/Commands.vala"
+ app_window_database_error (_tmp9_);
+#line 467 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_error_free0 (err);
+#line 5626 "Commands.c"
+ }
+ __finally445:
+ {
+ AppWindow* _tmp10_ = NULL;
+ AppWindow* _tmp11_ = NULL;
+#line 472 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = app_window_get_instance ();
+#line 472 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _tmp10_;
+#line 472 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_normal_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_PAGE_WINDOW, PageWindow));
+#line 472 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp11_);
+#line 5640 "Commands.c"
+ }
+#line 467 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 467 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 467 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_clear_error (&_inner_error_);
+#line 467 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 5650 "Commands.c"
+ }
+}
+
+
+static void multiple_data_source_at_once_command_real_undo_on_all (MultipleDataSourceAtOnceCommand* self, GeeCollection* sources) {
+#line 476 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("Type `%s' does not implement abstract method `multiple_data_source_at_once_command_undo_on_all'", g_type_name (G_TYPE_FROM_INSTANCE (self)));
+#line 476 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 5660 "Commands.c"
+}
+
+
+void multiple_data_source_at_once_command_undo_on_all (MultipleDataSourceAtOnceCommand* self, GeeCollection* sources) {
+#line 476 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND (self));
+#line 476 "/home/jens/Source/shotwell/src/Commands.vala"
+ MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND_GET_CLASS (self)->undo_on_all (self, sources);
+#line 5669 "Commands.c"
+}
+
+
+static void multiple_data_source_at_once_command_on_sources_destroyed (MultipleDataSourceAtOnceCommand* self, GeeCollection* destroyed) {
+#line 478 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND (self));
+#line 478 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_COLLECTION (destroyed));
+#line 5678 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = destroyed;
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp1_;
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 5691 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ DataSource* source = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ GeeHashSet* _tmp6_ = NULL;
+ DataSource* _tmp7_ = NULL;
+ gboolean _tmp8_ = FALSE;
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _source_it;
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 5708 "Commands.c"
+ }
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _source_it;
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp5_;
+#line 480 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = self->priv->sources;
+#line 480 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = source;
+#line 480 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = gee_abstract_collection_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp7_);
+#line 480 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp8_) {
+#line 5724 "Commands.c"
+ CommandManager* _tmp9_ = NULL;
+ CommandManager* _tmp10_ = NULL;
+#line 481 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 481 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_;
+#line 481 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp10_);
+#line 481 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp10_);
+#line 483 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 483 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 5739 "Commands.c"
+ }
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 5743 "Commands.c"
+ }
+#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 5747 "Commands.c"
+ }
+}
+
+
+static void multiple_data_source_at_once_command_class_init (MultipleDataSourceAtOnceCommandClass * klass) {
+#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_data_source_at_once_command_parent_class = g_type_class_peek_parent (klass);
+#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (MultipleDataSourceAtOnceCommandPrivate));
+#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = multiple_data_source_at_once_command_real_execute;
+#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceAtOnceCommandClass *) klass)->execute_on_all = multiple_data_source_at_once_command_real_execute_on_all;
+#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = multiple_data_source_at_once_command_real_undo;
+#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceAtOnceCommandClass *) klass)->undo_on_all = multiple_data_source_at_once_command_real_undo_on_all;
+#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = multiple_data_source_at_once_command_finalize;
+#line 5767 "Commands.c"
+}
+
+
+static void multiple_data_source_at_once_command_instance_init (MultipleDataSourceAtOnceCommand * self) {
+ GeeHashSet* _tmp0_ = NULL;
+ GeeHashSet* _tmp1_ = NULL;
+#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND_GET_PRIVATE (self);
+#line 414 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_set_new (TYPE_DATA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 414 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->sources = _tmp0_;
+#line 415 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_hash_set_new (TYPE_SOURCE_COLLECTION, (GBoxedCopyFunc) data_collection_ref, data_collection_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 415 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->hooked_collections = _tmp1_;
+#line 5784 "Commands.c"
+}
+
+
+static void multiple_data_source_at_once_command_finalize (GObject* obj) {
+ MultipleDataSourceAtOnceCommand * self;
+#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND, MultipleDataSourceAtOnceCommand);
+#line 5792 "Commands.c"
+ {
+ GeeIterator* _source_collection_it = NULL;
+ GeeHashSet* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->hooked_collections;
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_collection_it = _tmp1_;
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 5805 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ SourceCollection* source_collection = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ SourceCollection* _tmp6_ = NULL;
+ guint _tmp7_ = 0U;
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _source_collection_it;
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 5821 "Commands.c"
+ }
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _source_collection_it;
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ source_collection = (SourceCollection*) _tmp5_;
+#line 435 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = source_collection;
+#line 435 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("items-destroyed", TYPE_SOURCE_COLLECTION, &_tmp7_, NULL, FALSE);
+#line 435 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp6_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp7_, 0, NULL, (GCallback) _multiple_data_source_at_once_command_on_sources_destroyed_source_collection_items_destroyed, self);
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (source_collection);
+#line 5837 "Commands.c"
+ }
+#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_collection_it);
+#line 5841 "Commands.c"
+ }
+#line 414 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->sources);
+#line 415 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->hooked_collections);
+#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (multiple_data_source_at_once_command_parent_class)->finalize (obj);
+#line 5849 "Commands.c"
+}
+
+
+GType multiple_data_source_at_once_command_get_type (void) {
+ static volatile gsize multiple_data_source_at_once_command_type_id__volatile = 0;
+ if (g_once_init_enter (&multiple_data_source_at_once_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (MultipleDataSourceAtOnceCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) multiple_data_source_at_once_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MultipleDataSourceAtOnceCommand), 0, (GInstanceInitFunc) multiple_data_source_at_once_command_instance_init, NULL };
+ GType multiple_data_source_at_once_command_type_id;
+ multiple_data_source_at_once_command_type_id = g_type_register_static (TYPE_PAGE_COMMAND, "MultipleDataSourceAtOnceCommand", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&multiple_data_source_at_once_command_type_id__volatile, multiple_data_source_at_once_command_type_id);
+ }
+ return multiple_data_source_at_once_command_type_id__volatile;
+}
+
+
+static void _multiple_photo_transformation_command_on_state_broken_photo_transformation_state_broken (PhotoTransformationState* _sender, gpointer self) {
+#line 508 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_photo_transformation_command_on_state_broken ((MultiplePhotoTransformationCommand*) self);
+#line 5868 "Commands.c"
+}
+
+
+MultiplePhotoTransformationCommand* multiple_photo_transformation_command_construct (GType object_type, GeeIterable* iter, const gchar* progress_text, const gchar* undo_progress_text, const gchar* name, const gchar* explanation) {
+ MultiplePhotoTransformationCommand * self = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ const gchar* _tmp4_ = NULL;
+#line 493 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 493 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (progress_text != NULL, NULL);
+#line 493 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (undo_progress_text != NULL, NULL);
+#line 493 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 493 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 495 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = iter;
+#line 495 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = progress_text;
+#line 495 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = undo_progress_text;
+#line 495 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = name;
+#line 495 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = explanation;
+#line 495 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (MultiplePhotoTransformationCommand*) multiple_data_source_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_, _tmp3_, _tmp4_);
+#line 5901 "Commands.c"
+ {
+ GeeArrayList* _source_list = NULL;
+ GeeArrayList* _tmp5_ = NULL;
+ GeeArrayList* _tmp6_ = NULL;
+ gint _source_size = 0;
+ GeeArrayList* _tmp7_ = NULL;
+ gint _tmp8_ = 0;
+ gint _tmp9_ = 0;
+ gint _source_index = 0;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand)->source_list;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _g_object_ref0 (_tmp5_);
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_list = _tmp6_;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _source_list;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _tmp8_;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_size = _tmp9_;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_index = -1;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 5929 "Commands.c"
+ gint _tmp10_ = 0;
+ gint _tmp11_ = 0;
+ gint _tmp12_ = 0;
+ DataSource* source = NULL;
+ GeeArrayList* _tmp13_ = NULL;
+ gint _tmp14_ = 0;
+ gpointer _tmp15_ = NULL;
+ Photo* photo = NULL;
+ DataSource* _tmp16_ = NULL;
+ Photo* _tmp17_ = NULL;
+ PhotoTransformationState* state = NULL;
+ Photo* _tmp18_ = NULL;
+ PhotoTransformationState* _tmp19_ = NULL;
+ PhotoTransformationState* _tmp20_ = NULL;
+ GeeHashMap* _tmp21_ = NULL;
+ Photo* _tmp22_ = NULL;
+ PhotoTransformationState* _tmp23_ = NULL;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _source_index;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_index = _tmp10_ + 1;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _source_index;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = _source_size;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp11_ < _tmp12_)) {
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 5959 "Commands.c"
+ }
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _source_list;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _source_index;
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp14_);
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp15_;
+#line 498 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = source;
+#line 498 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, TYPE_PHOTO, Photo));
+#line 498 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo = _tmp17_;
+#line 499 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = photo;
+#line 499 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = photo_save_transformation_state (_tmp18_);
+#line 499 "/home/jens/Source/shotwell/src/Commands.vala"
+ state = _tmp19_;
+#line 500 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = state;
+#line 500 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp20_, "broken", (GCallback) _multiple_photo_transformation_command_on_state_broken_photo_transformation_state_broken, self, 0);
+#line 502 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = self->priv->map;
+#line 502 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = photo;
+#line 502 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = state;
+#line 502 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp22_, _tmp23_);
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (state);
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo);
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 5999 "Commands.c"
+ }
+#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_list);
+#line 6003 "Commands.c"
+ }
+#line 493 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 6007 "Commands.c"
+}
+
+
+static void multiple_photo_transformation_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ MultiplePhotoTransformationCommand * self;
+ Photo* photo = NULL;
+ DataSource* _tmp0_ = NULL;
+ Photo* _tmp1_ = NULL;
+ PhotoTransformationState* state = NULL;
+ GeeHashMap* _tmp2_ = NULL;
+ gpointer _tmp3_ = NULL;
+#line 511 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND, MultiplePhotoTransformationCommand);
+#line 511 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 512 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 512 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo));
+#line 512 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo = _tmp1_;
+#line 514 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->map;
+#line 514 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), photo);
+#line 514 "/home/jens/Source/shotwell/src/Commands.vala"
+ state = (PhotoTransformationState*) _tmp3_;
+#line 515 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (state != NULL, "state != null");
+#line 517 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_load_transformation_state (photo, state);
+#line 511 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (state);
+#line 511 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo);
+#line 6043 "Commands.c"
+}
+
+
+static void multiple_photo_transformation_command_on_state_broken (MultiplePhotoTransformationCommand* self) {
+ CommandManager* _tmp0_ = NULL;
+ CommandManager* _tmp1_ = NULL;
+#line 520 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND (self));
+#line 521 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 521 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 521 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp1_);
+#line 521 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp1_);
+#line 6060 "Commands.c"
+}
+
+
+static void multiple_photo_transformation_command_class_init (MultiplePhotoTransformationCommandClass * klass) {
+#line 489 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_photo_transformation_command_parent_class = g_type_class_peek_parent (klass);
+#line 489 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (MultiplePhotoTransformationCommandPrivate));
+#line 489 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->undo_on_source = multiple_photo_transformation_command_real_undo_on_source;
+#line 489 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = multiple_photo_transformation_command_finalize;
+#line 6073 "Commands.c"
+}
+
+
+static void multiple_photo_transformation_command_instance_init (MultiplePhotoTransformationCommand * self) {
+ GeeHashMap* _tmp0_ = NULL;
+#line 489 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = MULTIPLE_PHOTO_TRANSFORMATION_COMMAND_GET_PRIVATE (self);
+#line 490 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_map_new (TYPE_PHOTO, (GBoxedCopyFunc) g_object_ref, g_object_unref, TYPE_PHOTO_TRANSFORMATION_STATE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 490 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->map = _tmp0_;
+#line 6085 "Commands.c"
+}
+
+
+static void multiple_photo_transformation_command_finalize (GObject* obj) {
+ MultiplePhotoTransformationCommand * self;
+#line 489 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND, MultiplePhotoTransformationCommand);
+#line 6093 "Commands.c"
+ {
+ GeeIterator* _state_it = NULL;
+ GeeHashMap* _tmp0_ = NULL;
+ GeeCollection* _tmp1_ = NULL;
+ GeeCollection* _tmp2_ = NULL;
+ GeeCollection* _tmp3_ = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ GeeIterator* _tmp5_ = NULL;
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->map;
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_map_get_values (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_MAP, GeeMap));
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp3_);
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _state_it = _tmp5_;
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 6120 "Commands.c"
+ GeeIterator* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+ PhotoTransformationState* state = NULL;
+ GeeIterator* _tmp8_ = NULL;
+ gpointer _tmp9_ = NULL;
+ PhotoTransformationState* _tmp10_ = NULL;
+ guint _tmp11_ = 0U;
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _state_it;
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_iterator_next (_tmp6_);
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp7_) {
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 6136 "Commands.c"
+ }
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _state_it;
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_iterator_get (_tmp8_);
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ state = (PhotoTransformationState*) _tmp9_;
+#line 508 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = state;
+#line 508 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_PHOTO_TRANSFORMATION_STATE, &_tmp11_, NULL, FALSE);
+#line 508 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp10_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp11_, 0, NULL, (GCallback) _multiple_photo_transformation_command_on_state_broken_photo_transformation_state_broken, self);
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (state);
+#line 6152 "Commands.c"
+ }
+#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_state_it);
+#line 6156 "Commands.c"
+ }
+#line 490 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->map);
+#line 489 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (multiple_photo_transformation_command_parent_class)->finalize (obj);
+#line 6162 "Commands.c"
+}
+
+
+GType multiple_photo_transformation_command_get_type (void) {
+ static volatile gsize multiple_photo_transformation_command_type_id__volatile = 0;
+ if (g_once_init_enter (&multiple_photo_transformation_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (MultiplePhotoTransformationCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) multiple_photo_transformation_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MultiplePhotoTransformationCommand), 0, (GInstanceInitFunc) multiple_photo_transformation_command_instance_init, NULL };
+ GType multiple_photo_transformation_command_type_id;
+ multiple_photo_transformation_command_type_id = g_type_register_static (TYPE_MULTIPLE_DATA_SOURCE_COMMAND, "MultiplePhotoTransformationCommand", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&multiple_photo_transformation_command_type_id__volatile, multiple_photo_transformation_command_type_id);
+ }
+ return multiple_photo_transformation_command_type_id__volatile;
+}
+
+
+RotateSingleCommand* rotate_single_command_construct (GType object_type, Photo* photo, Rotation rotation, const gchar* name, const gchar* explanation) {
+ RotateSingleCommand * self = NULL;
+ Photo* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ Rotation _tmp3_ = 0;
+#line 528 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PHOTO (photo), NULL);
+#line 528 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 528 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = name;
+#line 529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = explanation;
+#line 529 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (RotateSingleCommand*) single_data_source_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_SOURCE, DataSource), _tmp1_, _tmp2_);
+#line 531 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = rotation;
+#line 531 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->rotation = _tmp3_;
+#line 528 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 6204 "Commands.c"
+}
+
+
+RotateSingleCommand* rotate_single_command_new (Photo* photo, Rotation rotation, const gchar* name, const gchar* explanation) {
+#line 528 "/home/jens/Source/shotwell/src/Commands.vala"
+ return rotate_single_command_construct (TYPE_ROTATE_SINGLE_COMMAND, photo, rotation, name, explanation);
+#line 6211 "Commands.c"
+}
+
+
+static void rotate_single_command_real_execute (Command* base) {
+ RotateSingleCommand * self;
+ DataSource* _tmp0_ = NULL;
+ Rotation _tmp1_ = 0;
+#line 534 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ROTATE_SINGLE_COMMAND, RotateSingleCommand);
+#line 535 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 535 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->rotation;
+#line 535 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_rotate (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo), _tmp1_);
+#line 6227 "Commands.c"
+}
+
+
+static void rotate_single_command_real_undo (Command* base) {
+ RotateSingleCommand * self;
+ DataSource* _tmp0_ = NULL;
+ Rotation _tmp1_ = 0;
+ Rotation _tmp2_ = 0;
+#line 538 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ROTATE_SINGLE_COMMAND, RotateSingleCommand);
+#line 539 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 539 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->rotation;
+#line 539 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = rotation_opposite (_tmp1_);
+#line 539 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_rotate (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo), _tmp2_);
+#line 6246 "Commands.c"
+}
+
+
+static void rotate_single_command_class_init (RotateSingleCommandClass * klass) {
+#line 525 "/home/jens/Source/shotwell/src/Commands.vala"
+ rotate_single_command_parent_class = g_type_class_peek_parent (klass);
+#line 525 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (RotateSingleCommandPrivate));
+#line 525 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = rotate_single_command_real_execute;
+#line 525 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = rotate_single_command_real_undo;
+#line 525 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = rotate_single_command_finalize;
+#line 6261 "Commands.c"
+}
+
+
+static void rotate_single_command_instance_init (RotateSingleCommand * self) {
+#line 525 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = ROTATE_SINGLE_COMMAND_GET_PRIVATE (self);
+#line 6268 "Commands.c"
+}
+
+
+static void rotate_single_command_finalize (GObject* obj) {
+ RotateSingleCommand * self;
+#line 525 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ROTATE_SINGLE_COMMAND, RotateSingleCommand);
+#line 525 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (rotate_single_command_parent_class)->finalize (obj);
+#line 6278 "Commands.c"
+}
+
+
+GType rotate_single_command_get_type (void) {
+ static volatile gsize rotate_single_command_type_id__volatile = 0;
+ if (g_once_init_enter (&rotate_single_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (RotateSingleCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) rotate_single_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RotateSingleCommand), 0, (GInstanceInitFunc) rotate_single_command_instance_init, NULL };
+ GType rotate_single_command_type_id;
+ rotate_single_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "RotateSingleCommand", &g_define_type_info, 0);
+ g_once_init_leave (&rotate_single_command_type_id__volatile, rotate_single_command_type_id);
+ }
+ return rotate_single_command_type_id__volatile;
+}
+
+
+RotateMultipleCommand* rotate_multiple_command_construct (GType object_type, GeeIterable* iter, Rotation rotation, const gchar* name, const gchar* explanation, const gchar* progress_text, const gchar* undo_progress_text) {
+ RotateMultipleCommand * self = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ const gchar* _tmp4_ = NULL;
+ Rotation _tmp5_ = 0;
+#line 546 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 546 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 546 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 546 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (progress_text != NULL, NULL);
+#line 546 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (undo_progress_text != NULL, NULL);
+#line 548 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = iter;
+#line 548 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = progress_text;
+#line 548 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = undo_progress_text;
+#line 548 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = name;
+#line 548 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = explanation;
+#line 548 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (RotateMultipleCommand*) multiple_data_source_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_, _tmp3_, _tmp4_);
+#line 550 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = rotation;
+#line 550 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->rotation = _tmp5_;
+#line 546 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 6330 "Commands.c"
+}
+
+
+RotateMultipleCommand* rotate_multiple_command_new (GeeIterable* iter, Rotation rotation, const gchar* name, const gchar* explanation, const gchar* progress_text, const gchar* undo_progress_text) {
+#line 546 "/home/jens/Source/shotwell/src/Commands.vala"
+ return rotate_multiple_command_construct (TYPE_ROTATE_MULTIPLE_COMMAND, iter, rotation, name, explanation, progress_text, undo_progress_text);
+#line 6337 "Commands.c"
+}
+
+
+static void rotate_multiple_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ RotateMultipleCommand * self;
+ DataSource* _tmp0_ = NULL;
+ Rotation _tmp1_ = 0;
+#line 553 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ROTATE_MULTIPLE_COMMAND, RotateMultipleCommand);
+#line 553 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 554 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 554 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->rotation;
+#line 554 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_rotate (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo), _tmp1_);
+#line 6355 "Commands.c"
+}
+
+
+static void rotate_multiple_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ RotateMultipleCommand * self;
+ DataSource* _tmp0_ = NULL;
+ Rotation _tmp1_ = 0;
+ Rotation _tmp2_ = 0;
+#line 557 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ROTATE_MULTIPLE_COMMAND, RotateMultipleCommand);
+#line 557 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 558 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 558 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->rotation;
+#line 558 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = rotation_opposite (_tmp1_);
+#line 558 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_rotate (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo), _tmp2_);
+#line 6376 "Commands.c"
+}
+
+
+static void rotate_multiple_command_class_init (RotateMultipleCommandClass * klass) {
+#line 543 "/home/jens/Source/shotwell/src/Commands.vala"
+ rotate_multiple_command_parent_class = g_type_class_peek_parent (klass);
+#line 543 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (RotateMultipleCommandPrivate));
+#line 543 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->execute_on_source = rotate_multiple_command_real_execute_on_source;
+#line 543 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->undo_on_source = rotate_multiple_command_real_undo_on_source;
+#line 543 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = rotate_multiple_command_finalize;
+#line 6391 "Commands.c"
+}
+
+
+static void rotate_multiple_command_instance_init (RotateMultipleCommand * self) {
+#line 543 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = ROTATE_MULTIPLE_COMMAND_GET_PRIVATE (self);
+#line 6398 "Commands.c"
+}
+
+
+static void rotate_multiple_command_finalize (GObject* obj) {
+ RotateMultipleCommand * self;
+#line 543 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ROTATE_MULTIPLE_COMMAND, RotateMultipleCommand);
+#line 543 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (rotate_multiple_command_parent_class)->finalize (obj);
+#line 6408 "Commands.c"
+}
+
+
+GType rotate_multiple_command_get_type (void) {
+ static volatile gsize rotate_multiple_command_type_id__volatile = 0;
+ if (g_once_init_enter (&rotate_multiple_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (RotateMultipleCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) rotate_multiple_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RotateMultipleCommand), 0, (GInstanceInitFunc) rotate_multiple_command_instance_init, NULL };
+ GType rotate_multiple_command_type_id;
+ rotate_multiple_command_type_id = g_type_register_static (TYPE_MULTIPLE_DATA_SOURCE_COMMAND, "RotateMultipleCommand", &g_define_type_info, 0);
+ g_once_init_leave (&rotate_multiple_command_type_id__volatile, rotate_multiple_command_type_id);
+ }
+ return rotate_multiple_command_type_id__volatile;
+}
+
+
+EditTitleCommand* edit_title_command_construct (GType object_type, MediaSource* source, const gchar* new_title) {
+ EditTitleCommand * self = NULL;
+ gchar* title = NULL;
+ const gchar* _tmp0_ = NULL;
+ gchar* _tmp1_ = NULL;
+ MediaSource* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+ MediaSource* _tmp5_ = NULL;
+ gchar* _tmp6_ = NULL;
+#line 566 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_MEDIA_SOURCE (source), NULL);
+#line 566 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (new_title != NULL, NULL);
+#line 567 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = g_dpgettext2 (NULL, "Button Label", RESOURCES_EDIT_TITLE_LABEL);
+#line 567 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = g_strdup (_tmp0_);
+#line 567 "/home/jens/Source/shotwell/src/Commands.vala"
+ title = _tmp1_;
+#line 569 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = source;
+#line 569 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (EditTitleCommand*) single_data_source_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_DATA_SOURCE, DataSource), title, "");
+#line 571 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = new_title;
+#line 571 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = g_strdup (_tmp3_);
+#line 571 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_title);
+#line 571 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_title = _tmp4_;
+#line 572 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = source;
+#line 572 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = media_source_get_title (_tmp5_);
+#line 572 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_title);
+#line 572 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->old_title = _tmp6_;
+#line 566 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (title);
+#line 566 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 6468 "Commands.c"
+}
+
+
+EditTitleCommand* edit_title_command_new (MediaSource* source, const gchar* new_title) {
+#line 566 "/home/jens/Source/shotwell/src/Commands.vala"
+ return edit_title_command_construct (TYPE_EDIT_TITLE_COMMAND, source, new_title);
+#line 6475 "Commands.c"
+}
+
+
+static void edit_title_command_real_execute (Command* base) {
+ EditTitleCommand * self;
+ DataSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+#line 575 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_EDIT_TITLE_COMMAND, EditTitleCommand);
+#line 576 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 576 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->new_title;
+#line 576 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_title (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MEDIA_SOURCE, MediaSource), _tmp1_);
+#line 6491 "Commands.c"
+}
+
+
+static void edit_title_command_real_undo (Command* base) {
+ EditTitleCommand * self;
+ DataSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+#line 579 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_EDIT_TITLE_COMMAND, EditTitleCommand);
+#line 580 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 580 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->old_title;
+#line 580 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_title (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MEDIA_SOURCE, MediaSource), _tmp1_);
+#line 6507 "Commands.c"
+}
+
+
+static void edit_title_command_class_init (EditTitleCommandClass * klass) {
+#line 562 "/home/jens/Source/shotwell/src/Commands.vala"
+ edit_title_command_parent_class = g_type_class_peek_parent (klass);
+#line 562 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (EditTitleCommandPrivate));
+#line 562 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = edit_title_command_real_execute;
+#line 562 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = edit_title_command_real_undo;
+#line 562 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = edit_title_command_finalize;
+#line 6522 "Commands.c"
+}
+
+
+static void edit_title_command_instance_init (EditTitleCommand * self) {
+#line 562 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = EDIT_TITLE_COMMAND_GET_PRIVATE (self);
+#line 6529 "Commands.c"
+}
+
+
+static void edit_title_command_finalize (GObject* obj) {
+ EditTitleCommand * self;
+#line 562 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_EDIT_TITLE_COMMAND, EditTitleCommand);
+#line 563 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_title);
+#line 564 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_title);
+#line 562 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (edit_title_command_parent_class)->finalize (obj);
+#line 6543 "Commands.c"
+}
+
+
+GType edit_title_command_get_type (void) {
+ static volatile gsize edit_title_command_type_id__volatile = 0;
+ if (g_once_init_enter (&edit_title_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (EditTitleCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) edit_title_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EditTitleCommand), 0, (GInstanceInitFunc) edit_title_command_instance_init, NULL };
+ GType edit_title_command_type_id;
+ edit_title_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "EditTitleCommand", &g_define_type_info, 0);
+ g_once_init_leave (&edit_title_command_type_id__volatile, edit_title_command_type_id);
+ }
+ return edit_title_command_type_id__volatile;
+}
+
+
+EditCommentCommand* edit_comment_command_construct (GType object_type, MediaSource* source, const gchar* new_comment) {
+ EditCommentCommand * self = NULL;
+ MediaSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ MediaSource* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+#line 588 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_MEDIA_SOURCE (source), NULL);
+#line 588 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (new_comment != NULL, NULL);
+#line 589 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 589 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (EditCommentCommand*) single_data_source_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_SOURCE, DataSource), RESOURCES_EDIT_COMMENT_LABEL, "");
+#line 591 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = new_comment;
+#line 591 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = g_strdup (_tmp1_);
+#line 591 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_comment);
+#line 591 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_comment = _tmp2_;
+#line 592 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = source;
+#line 592 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = media_source_get_comment (_tmp3_);
+#line 592 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_comment);
+#line 592 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->old_comment = _tmp4_;
+#line 588 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 6592 "Commands.c"
+}
+
+
+EditCommentCommand* edit_comment_command_new (MediaSource* source, const gchar* new_comment) {
+#line 588 "/home/jens/Source/shotwell/src/Commands.vala"
+ return edit_comment_command_construct (TYPE_EDIT_COMMENT_COMMAND, source, new_comment);
+#line 6599 "Commands.c"
+}
+
+
+static void edit_comment_command_real_execute (Command* base) {
+ EditCommentCommand * self;
+ DataSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+#line 595 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_EDIT_COMMENT_COMMAND, EditCommentCommand);
+#line 596 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 596 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->new_comment;
+#line 596 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_comment (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MEDIA_SOURCE, MediaSource), _tmp1_);
+#line 6615 "Commands.c"
+}
+
+
+static void edit_comment_command_real_undo (Command* base) {
+ EditCommentCommand * self;
+ DataSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+#line 599 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_EDIT_COMMENT_COMMAND, EditCommentCommand);
+#line 600 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 600 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->old_comment;
+#line 600 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_comment (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MEDIA_SOURCE, MediaSource), _tmp1_);
+#line 6631 "Commands.c"
+}
+
+
+static void edit_comment_command_class_init (EditCommentCommandClass * klass) {
+#line 584 "/home/jens/Source/shotwell/src/Commands.vala"
+ edit_comment_command_parent_class = g_type_class_peek_parent (klass);
+#line 584 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (EditCommentCommandPrivate));
+#line 584 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = edit_comment_command_real_execute;
+#line 584 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = edit_comment_command_real_undo;
+#line 584 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = edit_comment_command_finalize;
+#line 6646 "Commands.c"
+}
+
+
+static void edit_comment_command_instance_init (EditCommentCommand * self) {
+#line 584 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = EDIT_COMMENT_COMMAND_GET_PRIVATE (self);
+#line 6653 "Commands.c"
+}
+
+
+static void edit_comment_command_finalize (GObject* obj) {
+ EditCommentCommand * self;
+#line 584 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_EDIT_COMMENT_COMMAND, EditCommentCommand);
+#line 585 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_comment);
+#line 586 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_comment);
+#line 584 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (edit_comment_command_parent_class)->finalize (obj);
+#line 6667 "Commands.c"
+}
+
+
+GType edit_comment_command_get_type (void) {
+ static volatile gsize edit_comment_command_type_id__volatile = 0;
+ if (g_once_init_enter (&edit_comment_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (EditCommentCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) edit_comment_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EditCommentCommand), 0, (GInstanceInitFunc) edit_comment_command_instance_init, NULL };
+ GType edit_comment_command_type_id;
+ edit_comment_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "EditCommentCommand", &g_define_type_info, 0);
+ g_once_init_leave (&edit_comment_command_type_id__volatile, edit_comment_command_type_id);
+ }
+ return edit_comment_command_type_id__volatile;
+}
+
+
+EditMultipleTitlesCommand* edit_multiple_titles_command_construct (GType object_type, GeeCollection* media_sources, const gchar* new_title) {
+ EditMultipleTitlesCommand * self = NULL;
+ gchar* title = NULL;
+ const gchar* _tmp0_ = NULL;
+ gchar* _tmp1_ = NULL;
+ GeeCollection* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ const gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+#line 608 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_COLLECTION (media_sources), NULL);
+#line 608 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (new_title != NULL, NULL);
+#line 609 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = g_dpgettext2 (NULL, "Button Label", RESOURCES_EDIT_TITLE_LABEL);
+#line 609 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = g_strdup (_tmp0_);
+#line 609 "/home/jens/Source/shotwell/src/Commands.vala"
+ title = _tmp1_;
+#line 611 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = media_sources;
+#line 611 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = title;
+#line 611 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (EditMultipleTitlesCommand*) multiple_data_source_at_once_command_construct (object_type, _tmp2_, _tmp3_, "");
+#line 613 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = new_title;
+#line 613 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = g_strdup (_tmp4_);
+#line 613 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->new_title);
+#line 613 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->new_title = _tmp5_;
+#line 6716 "Commands.c"
+ {
+ GeeIterator* _media_it = NULL;
+ GeeCollection* _tmp6_ = NULL;
+ GeeIterator* _tmp7_ = NULL;
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = media_sources;
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ _media_it = _tmp7_;
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 6729 "Commands.c"
+ GeeIterator* _tmp8_ = NULL;
+ gboolean _tmp9_ = FALSE;
+ MediaSource* media = NULL;
+ GeeIterator* _tmp10_ = NULL;
+ gpointer _tmp11_ = NULL;
+ GeeHashMap* _tmp12_ = NULL;
+ MediaSource* _tmp13_ = NULL;
+ MediaSource* _tmp14_ = NULL;
+ gchar* _tmp15_ = NULL;
+ gchar* _tmp16_ = NULL;
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _media_it;
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_iterator_next (_tmp8_);
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp9_) {
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 6748 "Commands.c"
+ }
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _media_it;
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = gee_iterator_get (_tmp10_);
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ media = (MediaSource*) _tmp11_;
+#line 615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = self->old_titles;
+#line 615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = media;
+#line 615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = media;
+#line 615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = media_source_get_title (_tmp14_);
+#line 615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _tmp15_;
+#line 615 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp13_, _tmp16_);
+#line 615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp16_);
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (media);
+#line 6772 "Commands.c"
+ }
+#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_media_it);
+#line 6776 "Commands.c"
+ }
+#line 608 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (title);
+#line 608 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 6782 "Commands.c"
+}
+
+
+EditMultipleTitlesCommand* edit_multiple_titles_command_new (GeeCollection* media_sources, const gchar* new_title) {
+#line 608 "/home/jens/Source/shotwell/src/Commands.vala"
+ return edit_multiple_titles_command_construct (TYPE_EDIT_MULTIPLE_TITLES_COMMAND, media_sources, new_title);
+#line 6789 "Commands.c"
+}
+
+
+static void edit_multiple_titles_command_real_execute_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources) {
+ EditMultipleTitlesCommand * self;
+#line 618 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_EDIT_MULTIPLE_TITLES_COMMAND, EditMultipleTitlesCommand);
+#line 618 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_COLLECTION (sources));
+#line 6799 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = sources;
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp1_;
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 6812 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ DataSource* source = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ DataSource* _tmp6_ = NULL;
+ const gchar* _tmp7_ = NULL;
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _source_it;
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 6828 "Commands.c"
+ }
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _source_it;
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp5_;
+#line 620 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = source;
+#line 620 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->new_title;
+#line 620 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_title (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_MEDIA_SOURCE, MediaSource), _tmp7_);
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 6844 "Commands.c"
+ }
+#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 6848 "Commands.c"
+ }
+}
+
+
+static void edit_multiple_titles_command_real_undo_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources) {
+ EditMultipleTitlesCommand * self;
+#line 623 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_EDIT_MULTIPLE_TITLES_COMMAND, EditMultipleTitlesCommand);
+#line 623 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_COLLECTION (sources));
+#line 6859 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = sources;
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp1_;
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 6872 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ DataSource* source = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ DataSource* _tmp6_ = NULL;
+ GeeHashMap* _tmp7_ = NULL;
+ DataSource* _tmp8_ = NULL;
+ gpointer _tmp9_ = NULL;
+ gchar* _tmp10_ = NULL;
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _source_it;
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 6891 "Commands.c"
+ }
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _source_it;
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp5_;
+#line 625 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = source;
+#line 625 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->old_titles;
+#line 625 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = source;
+#line 625 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 625 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = (gchar*) _tmp9_;
+#line 625 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_title (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_MEDIA_SOURCE, MediaSource), _tmp10_);
+#line 625 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp10_);
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 6915 "Commands.c"
+ }
+#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 6919 "Commands.c"
+ }
+}
+
+
+static void edit_multiple_titles_command_class_init (EditMultipleTitlesCommandClass * klass) {
+#line 604 "/home/jens/Source/shotwell/src/Commands.vala"
+ edit_multiple_titles_command_parent_class = g_type_class_peek_parent (klass);
+#line 604 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceAtOnceCommandClass *) klass)->execute_on_all = edit_multiple_titles_command_real_execute_on_all;
+#line 604 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceAtOnceCommandClass *) klass)->undo_on_all = edit_multiple_titles_command_real_undo_on_all;
+#line 604 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = edit_multiple_titles_command_finalize;
+#line 6933 "Commands.c"
+}
+
+
+static void edit_multiple_titles_command_instance_init (EditMultipleTitlesCommand * self) {
+ GeeHashMap* _tmp0_ = NULL;
+#line 606 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_map_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 606 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->old_titles = _tmp0_;
+#line 6943 "Commands.c"
+}
+
+
+static void edit_multiple_titles_command_finalize (GObject* obj) {
+ EditMultipleTitlesCommand * self;
+#line 604 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_EDIT_MULTIPLE_TITLES_COMMAND, EditMultipleTitlesCommand);
+#line 605 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->new_title);
+#line 606 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->old_titles);
+#line 604 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (edit_multiple_titles_command_parent_class)->finalize (obj);
+#line 6957 "Commands.c"
+}
+
+
+GType edit_multiple_titles_command_get_type (void) {
+ static volatile gsize edit_multiple_titles_command_type_id__volatile = 0;
+ if (g_once_init_enter (&edit_multiple_titles_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (EditMultipleTitlesCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) edit_multiple_titles_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EditMultipleTitlesCommand), 0, (GInstanceInitFunc) edit_multiple_titles_command_instance_init, NULL };
+ GType edit_multiple_titles_command_type_id;
+ edit_multiple_titles_command_type_id = g_type_register_static (TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND, "EditMultipleTitlesCommand", &g_define_type_info, 0);
+ g_once_init_leave (&edit_multiple_titles_command_type_id__volatile, edit_multiple_titles_command_type_id);
+ }
+ return edit_multiple_titles_command_type_id__volatile;
+}
+
+
+EditMultipleCommentsCommand* edit_multiple_comments_command_construct (GType object_type, GeeCollection* media_sources, const gchar* new_comment) {
+ EditMultipleCommentsCommand * self = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+#line 633 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_COLLECTION (media_sources), NULL);
+#line 633 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (new_comment != NULL, NULL);
+#line 634 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = media_sources;
+#line 634 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (EditMultipleCommentsCommand*) multiple_data_source_at_once_command_construct (object_type, _tmp0_, RESOURCES_EDIT_COMMENT_LABEL, "");
+#line 636 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = new_comment;
+#line 636 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = g_strdup (_tmp1_);
+#line 636 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->new_comment);
+#line 636 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->new_comment = _tmp2_;
+#line 6994 "Commands.c"
+ {
+ GeeIterator* _media_it = NULL;
+ GeeCollection* _tmp3_ = NULL;
+ GeeIterator* _tmp4_ = NULL;
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = media_sources;
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _media_it = _tmp4_;
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 7007 "Commands.c"
+ GeeIterator* _tmp5_ = NULL;
+ gboolean _tmp6_ = FALSE;
+ MediaSource* media = NULL;
+ GeeIterator* _tmp7_ = NULL;
+ gpointer _tmp8_ = NULL;
+ GeeHashMap* _tmp9_ = NULL;
+ MediaSource* _tmp10_ = NULL;
+ MediaSource* _tmp11_ = NULL;
+ gchar* _tmp12_ = NULL;
+ gchar* _tmp13_ = NULL;
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _media_it;
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = gee_iterator_next (_tmp5_);
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp6_) {
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 7026 "Commands.c"
+ }
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _media_it;
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = gee_iterator_get (_tmp7_);
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ media = (MediaSource*) _tmp8_;
+#line 638 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->old_comments;
+#line 638 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = media;
+#line 638 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = media;
+#line 638 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = media_source_get_comment (_tmp11_);
+#line 638 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _tmp12_;
+#line 638 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp10_, _tmp13_);
+#line 638 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp13_);
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (media);
+#line 7050 "Commands.c"
+ }
+#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_media_it);
+#line 7054 "Commands.c"
+ }
+#line 633 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 7058 "Commands.c"
+}
+
+
+EditMultipleCommentsCommand* edit_multiple_comments_command_new (GeeCollection* media_sources, const gchar* new_comment) {
+#line 633 "/home/jens/Source/shotwell/src/Commands.vala"
+ return edit_multiple_comments_command_construct (TYPE_EDIT_MULTIPLE_COMMENTS_COMMAND, media_sources, new_comment);
+#line 7065 "Commands.c"
+}
+
+
+static void edit_multiple_comments_command_real_execute_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources) {
+ EditMultipleCommentsCommand * self;
+#line 641 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_EDIT_MULTIPLE_COMMENTS_COMMAND, EditMultipleCommentsCommand);
+#line 641 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_COLLECTION (sources));
+#line 7075 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = sources;
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp1_;
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 7088 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ DataSource* source = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ DataSource* _tmp6_ = NULL;
+ const gchar* _tmp7_ = NULL;
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _source_it;
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 7104 "Commands.c"
+ }
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _source_it;
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp5_;
+#line 643 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = source;
+#line 643 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->new_comment;
+#line 643 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_comment (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_MEDIA_SOURCE, MediaSource), _tmp7_);
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 7120 "Commands.c"
+ }
+#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 7124 "Commands.c"
+ }
+}
+
+
+static void edit_multiple_comments_command_real_undo_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources) {
+ EditMultipleCommentsCommand * self;
+#line 646 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_EDIT_MULTIPLE_COMMENTS_COMMAND, EditMultipleCommentsCommand);
+#line 646 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_COLLECTION (sources));
+#line 7135 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = sources;
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp1_;
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 7148 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ DataSource* source = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ DataSource* _tmp6_ = NULL;
+ GeeHashMap* _tmp7_ = NULL;
+ DataSource* _tmp8_ = NULL;
+ gpointer _tmp9_ = NULL;
+ gchar* _tmp10_ = NULL;
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _source_it;
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 7167 "Commands.c"
+ }
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _source_it;
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp5_;
+#line 648 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = source;
+#line 648 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->old_comments;
+#line 648 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = source;
+#line 648 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 648 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = (gchar*) _tmp9_;
+#line 648 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_comment (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_MEDIA_SOURCE, MediaSource), _tmp10_);
+#line 648 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp10_);
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 7191 "Commands.c"
+ }
+#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 7195 "Commands.c"
+ }
+}
+
+
+static void edit_multiple_comments_command_class_init (EditMultipleCommentsCommandClass * klass) {
+#line 629 "/home/jens/Source/shotwell/src/Commands.vala"
+ edit_multiple_comments_command_parent_class = g_type_class_peek_parent (klass);
+#line 629 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceAtOnceCommandClass *) klass)->execute_on_all = edit_multiple_comments_command_real_execute_on_all;
+#line 629 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceAtOnceCommandClass *) klass)->undo_on_all = edit_multiple_comments_command_real_undo_on_all;
+#line 629 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = edit_multiple_comments_command_finalize;
+#line 7209 "Commands.c"
+}
+
+
+static void edit_multiple_comments_command_instance_init (EditMultipleCommentsCommand * self) {
+ GeeHashMap* _tmp0_ = NULL;
+#line 631 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_map_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 631 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->old_comments = _tmp0_;
+#line 7219 "Commands.c"
+}
+
+
+static void edit_multiple_comments_command_finalize (GObject* obj) {
+ EditMultipleCommentsCommand * self;
+#line 629 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_EDIT_MULTIPLE_COMMENTS_COMMAND, EditMultipleCommentsCommand);
+#line 630 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->new_comment);
+#line 631 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->old_comments);
+#line 629 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (edit_multiple_comments_command_parent_class)->finalize (obj);
+#line 7233 "Commands.c"
+}
+
+
+GType edit_multiple_comments_command_get_type (void) {
+ static volatile gsize edit_multiple_comments_command_type_id__volatile = 0;
+ if (g_once_init_enter (&edit_multiple_comments_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (EditMultipleCommentsCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) edit_multiple_comments_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EditMultipleCommentsCommand), 0, (GInstanceInitFunc) edit_multiple_comments_command_instance_init, NULL };
+ GType edit_multiple_comments_command_type_id;
+ edit_multiple_comments_command_type_id = g_type_register_static (TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND, "EditMultipleCommentsCommand", &g_define_type_info, 0);
+ g_once_init_leave (&edit_multiple_comments_command_type_id__volatile, edit_multiple_comments_command_type_id);
+ }
+ return edit_multiple_comments_command_type_id__volatile;
+}
+
+
+RenameEventCommand* rename_event_command_construct (GType object_type, Event* event, const gchar* new_name) {
+ RenameEventCommand * self = NULL;
+ Event* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ Event* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+#line 656 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_EVENT (event), NULL);
+#line 656 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (new_name != NULL, NULL);
+#line 657 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = event;
+#line 657 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (RenameEventCommand*) simple_proxyable_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PROXYABLE, Proxyable), RESOURCES_RENAME_EVENT_LABEL, "");
+#line 659 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = new_name;
+#line 659 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = g_strdup (_tmp1_);
+#line 659 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_name);
+#line 659 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_name = _tmp2_;
+#line 660 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = event;
+#line 660 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = event_get_raw_name (_tmp3_);
+#line 660 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_name);
+#line 660 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->old_name = _tmp4_;
+#line 656 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 7282 "Commands.c"
+}
+
+
+RenameEventCommand* rename_event_command_new (Event* event, const gchar* new_name) {
+#line 656 "/home/jens/Source/shotwell/src/Commands.vala"
+ return rename_event_command_construct (TYPE_RENAME_EVENT_COMMAND, event, new_name);
+#line 7289 "Commands.c"
+}
+
+
+static void rename_event_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ RenameEventCommand * self;
+ DataSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+#line 663 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_RENAME_EVENT_COMMAND, RenameEventCommand);
+#line 663 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 664 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 664 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->new_name;
+#line 664 "/home/jens/Source/shotwell/src/Commands.vala"
+ event_rename (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_EVENT, Event), _tmp1_);
+#line 7307 "Commands.c"
+}
+
+
+static void rename_event_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ RenameEventCommand * self;
+ DataSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+#line 667 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_RENAME_EVENT_COMMAND, RenameEventCommand);
+#line 667 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 668 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 668 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->old_name;
+#line 668 "/home/jens/Source/shotwell/src/Commands.vala"
+ event_rename (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_EVENT, Event), _tmp1_);
+#line 7325 "Commands.c"
+}
+
+
+static void rename_event_command_class_init (RenameEventCommandClass * klass) {
+#line 652 "/home/jens/Source/shotwell/src/Commands.vala"
+ rename_event_command_parent_class = g_type_class_peek_parent (klass);
+#line 652 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (RenameEventCommandPrivate));
+#line 652 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->execute_on_source = rename_event_command_real_execute_on_source;
+#line 652 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->undo_on_source = rename_event_command_real_undo_on_source;
+#line 652 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = rename_event_command_finalize;
+#line 7340 "Commands.c"
+}
+
+
+static void rename_event_command_instance_init (RenameEventCommand * self) {
+#line 652 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = RENAME_EVENT_COMMAND_GET_PRIVATE (self);
+#line 7347 "Commands.c"
+}
+
+
+static void rename_event_command_finalize (GObject* obj) {
+ RenameEventCommand * self;
+#line 652 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_RENAME_EVENT_COMMAND, RenameEventCommand);
+#line 653 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_name);
+#line 654 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_name);
+#line 652 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (rename_event_command_parent_class)->finalize (obj);
+#line 7361 "Commands.c"
+}
+
+
+GType rename_event_command_get_type (void) {
+ static volatile gsize rename_event_command_type_id__volatile = 0;
+ if (g_once_init_enter (&rename_event_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (RenameEventCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) rename_event_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RenameEventCommand), 0, (GInstanceInitFunc) rename_event_command_instance_init, NULL };
+ GType rename_event_command_type_id;
+ rename_event_command_type_id = g_type_register_static (TYPE_SIMPLE_PROXYABLE_COMMAND, "RenameEventCommand", &g_define_type_info, 0);
+ g_once_init_leave (&rename_event_command_type_id__volatile, rename_event_command_type_id);
+ }
+ return rename_event_command_type_id__volatile;
+}
+
+
+EditEventCommentCommand* edit_event_comment_command_construct (GType object_type, Event* event, const gchar* new_comment) {
+ EditEventCommentCommand * self = NULL;
+ Event* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ Event* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+#line 676 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_EVENT (event), NULL);
+#line 676 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (new_comment != NULL, NULL);
+#line 677 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = event;
+#line 677 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (EditEventCommentCommand*) simple_proxyable_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PROXYABLE, Proxyable), RESOURCES_EDIT_COMMENT_LABEL, "");
+#line 679 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = new_comment;
+#line 679 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = g_strdup (_tmp1_);
+#line 679 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_comment);
+#line 679 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_comment = _tmp2_;
+#line 680 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = event;
+#line 680 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = event_source_get_comment (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_EVENT_SOURCE, EventSource));
+#line 680 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_comment);
+#line 680 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->old_comment = _tmp4_;
+#line 676 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 7410 "Commands.c"
+}
+
+
+EditEventCommentCommand* edit_event_comment_command_new (Event* event, const gchar* new_comment) {
+#line 676 "/home/jens/Source/shotwell/src/Commands.vala"
+ return edit_event_comment_command_construct (TYPE_EDIT_EVENT_COMMENT_COMMAND, event, new_comment);
+#line 7417 "Commands.c"
+}
+
+
+static void edit_event_comment_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ EditEventCommentCommand * self;
+ DataSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+#line 683 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_EDIT_EVENT_COMMENT_COMMAND, EditEventCommentCommand);
+#line 683 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 684 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 684 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->new_comment;
+#line 684 "/home/jens/Source/shotwell/src/Commands.vala"
+ event_source_set_comment (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_EVENT, Event), TYPE_EVENT_SOURCE, EventSource), _tmp1_);
+#line 7435 "Commands.c"
+}
+
+
+static void edit_event_comment_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ EditEventCommentCommand * self;
+ DataSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+#line 687 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_EDIT_EVENT_COMMENT_COMMAND, EditEventCommentCommand);
+#line 687 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 688 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 688 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->old_comment;
+#line 688 "/home/jens/Source/shotwell/src/Commands.vala"
+ event_source_set_comment (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_EVENT, Event), TYPE_EVENT_SOURCE, EventSource), _tmp1_);
+#line 7453 "Commands.c"
+}
+
+
+static void edit_event_comment_command_class_init (EditEventCommentCommandClass * klass) {
+#line 672 "/home/jens/Source/shotwell/src/Commands.vala"
+ edit_event_comment_command_parent_class = g_type_class_peek_parent (klass);
+#line 672 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (EditEventCommentCommandPrivate));
+#line 672 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->execute_on_source = edit_event_comment_command_real_execute_on_source;
+#line 672 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->undo_on_source = edit_event_comment_command_real_undo_on_source;
+#line 672 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = edit_event_comment_command_finalize;
+#line 7468 "Commands.c"
+}
+
+
+static void edit_event_comment_command_instance_init (EditEventCommentCommand * self) {
+#line 672 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = EDIT_EVENT_COMMENT_COMMAND_GET_PRIVATE (self);
+#line 7475 "Commands.c"
+}
+
+
+static void edit_event_comment_command_finalize (GObject* obj) {
+ EditEventCommentCommand * self;
+#line 672 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_EDIT_EVENT_COMMENT_COMMAND, EditEventCommentCommand);
+#line 673 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_comment);
+#line 674 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_comment);
+#line 672 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (edit_event_comment_command_parent_class)->finalize (obj);
+#line 7489 "Commands.c"
+}
+
+
+GType edit_event_comment_command_get_type (void) {
+ static volatile gsize edit_event_comment_command_type_id__volatile = 0;
+ if (g_once_init_enter (&edit_event_comment_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (EditEventCommentCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) edit_event_comment_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EditEventCommentCommand), 0, (GInstanceInitFunc) edit_event_comment_command_instance_init, NULL };
+ GType edit_event_comment_command_type_id;
+ edit_event_comment_command_type_id = g_type_register_static (TYPE_SIMPLE_PROXYABLE_COMMAND, "EditEventCommentCommand", &g_define_type_info, 0);
+ g_once_init_leave (&edit_event_comment_command_type_id__volatile, edit_event_comment_command_type_id);
+ }
+ return edit_event_comment_command_type_id__volatile;
+}
+
+
+SetKeyPhotoCommand* set_key_photo_command_construct (GType object_type, Event* event, MediaSource* new_primary_source) {
+ SetKeyPhotoCommand * self = NULL;
+ Event* _tmp0_ = NULL;
+ MediaSource* _tmp1_ = NULL;
+ MediaSource* _tmp2_ = NULL;
+ Event* _tmp3_ = NULL;
+ MediaSource* _tmp4_ = NULL;
+#line 696 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_EVENT (event), NULL);
+#line 696 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_MEDIA_SOURCE (new_primary_source), NULL);
+#line 697 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = event;
+#line 697 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (SetKeyPhotoCommand*) single_data_source_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_SOURCE, DataSource), RESOURCES_MAKE_KEY_PHOTO_LABEL, "");
+#line 699 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = new_primary_source;
+#line 699 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 699 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->new_primary_source);
+#line 699 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_primary_source = _tmp2_;
+#line 700 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = event;
+#line 700 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = event_get_primary_source (_tmp3_);
+#line 700 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->old_primary_source);
+#line 700 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->old_primary_source = _tmp4_;
+#line 696 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 7538 "Commands.c"
+}
+
+
+SetKeyPhotoCommand* set_key_photo_command_new (Event* event, MediaSource* new_primary_source) {
+#line 696 "/home/jens/Source/shotwell/src/Commands.vala"
+ return set_key_photo_command_construct (TYPE_SET_KEY_PHOTO_COMMAND, event, new_primary_source);
+#line 7545 "Commands.c"
+}
+
+
+static void set_key_photo_command_real_execute (Command* base) {
+ SetKeyPhotoCommand * self;
+ DataSource* _tmp0_ = NULL;
+ MediaSource* _tmp1_ = NULL;
+#line 703 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_KEY_PHOTO_COMMAND, SetKeyPhotoCommand);
+#line 704 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 704 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->new_primary_source;
+#line 704 "/home/jens/Source/shotwell/src/Commands.vala"
+ event_set_primary_source (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_EVENT, Event), _tmp1_);
+#line 7561 "Commands.c"
+}
+
+
+static void set_key_photo_command_real_undo (Command* base) {
+ SetKeyPhotoCommand * self;
+ DataSource* _tmp0_ = NULL;
+ MediaSource* _tmp1_ = NULL;
+#line 707 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_KEY_PHOTO_COMMAND, SetKeyPhotoCommand);
+#line 708 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 708 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->old_primary_source;
+#line 708 "/home/jens/Source/shotwell/src/Commands.vala"
+ event_set_primary_source (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_EVENT, Event), _tmp1_);
+#line 7577 "Commands.c"
+}
+
+
+static void set_key_photo_command_class_init (SetKeyPhotoCommandClass * klass) {
+#line 692 "/home/jens/Source/shotwell/src/Commands.vala"
+ set_key_photo_command_parent_class = g_type_class_peek_parent (klass);
+#line 692 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (SetKeyPhotoCommandPrivate));
+#line 692 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = set_key_photo_command_real_execute;
+#line 692 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = set_key_photo_command_real_undo;
+#line 692 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = set_key_photo_command_finalize;
+#line 7592 "Commands.c"
+}
+
+
+static void set_key_photo_command_instance_init (SetKeyPhotoCommand * self) {
+#line 692 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = SET_KEY_PHOTO_COMMAND_GET_PRIVATE (self);
+#line 7599 "Commands.c"
+}
+
+
+static void set_key_photo_command_finalize (GObject* obj) {
+ SetKeyPhotoCommand * self;
+#line 692 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SET_KEY_PHOTO_COMMAND, SetKeyPhotoCommand);
+#line 693 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->new_primary_source);
+#line 694 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->old_primary_source);
+#line 692 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (set_key_photo_command_parent_class)->finalize (obj);
+#line 7613 "Commands.c"
+}
+
+
+GType set_key_photo_command_get_type (void) {
+ static volatile gsize set_key_photo_command_type_id__volatile = 0;
+ if (g_once_init_enter (&set_key_photo_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SetKeyPhotoCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) set_key_photo_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SetKeyPhotoCommand), 0, (GInstanceInitFunc) set_key_photo_command_instance_init, NULL };
+ GType set_key_photo_command_type_id;
+ set_key_photo_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "SetKeyPhotoCommand", &g_define_type_info, 0);
+ g_once_init_leave (&set_key_photo_command_type_id__volatile, set_key_photo_command_type_id);
+ }
+ return set_key_photo_command_type_id__volatile;
+}
+
+
+RevertSingleCommand* revert_single_command_construct (GType object_type, Photo* photo) {
+ RevertSingleCommand * self = NULL;
+ Photo* _tmp0_ = NULL;
+#line 713 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PHOTO (photo), NULL);
+#line 714 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 714 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (RevertSingleCommand*) generic_photo_transformation_command_construct (object_type, _tmp0_, RESOURCES_REVERT_LABEL, "");
+#line 713 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 7640 "Commands.c"
+}
+
+
+RevertSingleCommand* revert_single_command_new (Photo* photo) {
+#line 713 "/home/jens/Source/shotwell/src/Commands.vala"
+ return revert_single_command_construct (TYPE_REVERT_SINGLE_COMMAND, photo);
+#line 7647 "Commands.c"
+}
+
+
+static void revert_single_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo) {
+ RevertSingleCommand * self;
+ Photo* _tmp0_ = NULL;
+#line 717 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_REVERT_SINGLE_COMMAND, RevertSingleCommand);
+#line 717 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PHOTO (photo));
+#line 718 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 718 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_remove_all_transformations (_tmp0_);
+#line 7662 "Commands.c"
+}
+
+
+static gboolean revert_single_command_real_compress (Command* base, Command* command) {
+ RevertSingleCommand * self;
+ gboolean result = FALSE;
+ RevertSingleCommand* revert_single_command = NULL;
+ Command* _tmp0_ = NULL;
+ RevertSingleCommand* _tmp1_ = NULL;
+ RevertSingleCommand* _tmp2_ = NULL;
+ RevertSingleCommand* _tmp3_ = NULL;
+ DataSource* _tmp4_ = NULL;
+ DataSource* _tmp5_ = NULL;
+#line 721 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_REVERT_SINGLE_COMMAND, RevertSingleCommand);
+#line 721 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_COMMAND (command), FALSE);
+#line 722 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command;
+#line 722 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, TYPE_REVERT_SINGLE_COMMAND) ? ((RevertSingleCommand*) _tmp0_) : NULL);
+#line 722 "/home/jens/Source/shotwell/src/Commands.vala"
+ revert_single_command = _tmp1_;
+#line 723 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = revert_single_command;
+#line 723 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ == NULL) {
+#line 724 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = FALSE;
+#line 724 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (revert_single_command);
+#line 724 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 7696 "Commands.c"
+ }
+#line 726 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = revert_single_command;
+#line 726 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 726 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 726 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_ != _tmp5_) {
+#line 727 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = FALSE;
+#line 727 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (revert_single_command);
+#line 727 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 7712 "Commands.c"
+ }
+#line 731 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = TRUE;
+#line 731 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (revert_single_command);
+#line 731 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 7720 "Commands.c"
+}
+
+
+static void revert_single_command_class_init (RevertSingleCommandClass * klass) {
+#line 712 "/home/jens/Source/shotwell/src/Commands.vala"
+ revert_single_command_parent_class = g_type_class_peek_parent (klass);
+#line 712 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((GenericPhotoTransformationCommandClass *) klass)->execute_on_photo = revert_single_command_real_execute_on_photo;
+#line 712 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->compress = revert_single_command_real_compress;
+#line 7731 "Commands.c"
+}
+
+
+static void revert_single_command_instance_init (RevertSingleCommand * self) {
+}
+
+
+GType revert_single_command_get_type (void) {
+ static volatile gsize revert_single_command_type_id__volatile = 0;
+ if (g_once_init_enter (&revert_single_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (RevertSingleCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) revert_single_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RevertSingleCommand), 0, (GInstanceInitFunc) revert_single_command_instance_init, NULL };
+ GType revert_single_command_type_id;
+ revert_single_command_type_id = g_type_register_static (TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, "RevertSingleCommand", &g_define_type_info, 0);
+ g_once_init_leave (&revert_single_command_type_id__volatile, revert_single_command_type_id);
+ }
+ return revert_single_command_type_id__volatile;
+}
+
+
+RevertMultipleCommand* revert_multiple_command_construct (GType object_type, GeeIterable* iter) {
+ RevertMultipleCommand * self = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+#line 736 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 737 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = iter;
+#line 737 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _ ("Reverting");
+#line 737 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _ ("Undoing Revert");
+#line 737 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (RevertMultipleCommand*) multiple_photo_transformation_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_, RESOURCES_REVERT_LABEL, "");
+#line 736 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 7768 "Commands.c"
+}
+
+
+RevertMultipleCommand* revert_multiple_command_new (GeeIterable* iter) {
+#line 736 "/home/jens/Source/shotwell/src/Commands.vala"
+ return revert_multiple_command_construct (TYPE_REVERT_MULTIPLE_COMMAND, iter);
+#line 7775 "Commands.c"
+}
+
+
+static void revert_multiple_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ RevertMultipleCommand * self;
+ DataSource* _tmp0_ = NULL;
+#line 741 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_REVERT_MULTIPLE_COMMAND, RevertMultipleCommand);
+#line 741 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 742 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 742 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_remove_all_transformations (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo));
+#line 7790 "Commands.c"
+}
+
+
+static void revert_multiple_command_class_init (RevertMultipleCommandClass * klass) {
+#line 735 "/home/jens/Source/shotwell/src/Commands.vala"
+ revert_multiple_command_parent_class = g_type_class_peek_parent (klass);
+#line 735 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->execute_on_source = revert_multiple_command_real_execute_on_source;
+#line 7799 "Commands.c"
+}
+
+
+static void revert_multiple_command_instance_init (RevertMultipleCommand * self) {
+}
+
+
+GType revert_multiple_command_get_type (void) {
+ static volatile gsize revert_multiple_command_type_id__volatile = 0;
+ if (g_once_init_enter (&revert_multiple_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (RevertMultipleCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) revert_multiple_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RevertMultipleCommand), 0, (GInstanceInitFunc) revert_multiple_command_instance_init, NULL };
+ GType revert_multiple_command_type_id;
+ revert_multiple_command_type_id = g_type_register_static (TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND, "RevertMultipleCommand", &g_define_type_info, 0);
+ g_once_init_leave (&revert_multiple_command_type_id__volatile, revert_multiple_command_type_id);
+ }
+ return revert_multiple_command_type_id__volatile;
+}
+
+
+EnhanceSingleCommand* enhance_single_command_construct (GType object_type, Photo* photo) {
+ EnhanceSingleCommand * self = NULL;
+ Photo* _tmp0_ = NULL;
+#line 747 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PHOTO (photo), NULL);
+#line 748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 748 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (EnhanceSingleCommand*) generic_photo_transformation_command_construct (object_type, _tmp0_, RESOURCES_ENHANCE_LABEL, RESOURCES_ENHANCE_TOOLTIP);
+#line 747 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 7830 "Commands.c"
+}
+
+
+EnhanceSingleCommand* enhance_single_command_new (Photo* photo) {
+#line 747 "/home/jens/Source/shotwell/src/Commands.vala"
+ return enhance_single_command_construct (TYPE_ENHANCE_SINGLE_COMMAND, photo);
+#line 7837 "Commands.c"
+}
+
+
+static void enhance_single_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo) {
+ EnhanceSingleCommand * self;
+ AppWindow* _tmp0_ = NULL;
+ AppWindow* _tmp1_ = NULL;
+ Photo* _tmp2_ = NULL;
+ AppWindow* _tmp3_ = NULL;
+ AppWindow* _tmp4_ = NULL;
+#line 751 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ENHANCE_SINGLE_COMMAND, EnhanceSingleCommand);
+#line 751 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PHOTO (photo));
+#line 752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = app_window_get_instance ();
+#line 752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 752 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_busy_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_PAGE_WINDOW, PageWindow));
+#line 752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp1_);
+#line 757 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = photo;
+#line 757 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_enhance (_tmp2_);
+#line 763 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = app_window_get_instance ();
+#line 763 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 763 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_normal_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_PAGE_WINDOW, PageWindow));
+#line 763 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp4_);
+#line 7872 "Commands.c"
+}
+
+
+static gboolean enhance_single_command_real_compress (Command* base, Command* command) {
+ EnhanceSingleCommand * self;
+ gboolean result = FALSE;
+ EnhanceSingleCommand* enhance_single_command = NULL;
+ Command* _tmp0_ = NULL;
+ EnhanceSingleCommand* _tmp1_ = NULL;
+ EnhanceSingleCommand* _tmp2_ = NULL;
+ EnhanceSingleCommand* _tmp3_ = NULL;
+ DataSource* _tmp4_ = NULL;
+ DataSource* _tmp5_ = NULL;
+#line 766 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ENHANCE_SINGLE_COMMAND, EnhanceSingleCommand);
+#line 766 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_COMMAND (command), FALSE);
+#line 767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command;
+#line 767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, TYPE_ENHANCE_SINGLE_COMMAND) ? ((EnhanceSingleCommand*) _tmp0_) : NULL);
+#line 767 "/home/jens/Source/shotwell/src/Commands.vala"
+ enhance_single_command = _tmp1_;
+#line 768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = enhance_single_command;
+#line 768 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ == NULL) {
+#line 769 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = FALSE;
+#line 769 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (enhance_single_command);
+#line 769 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 7906 "Commands.c"
+ }
+#line 771 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = enhance_single_command;
+#line 771 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 771 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 771 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_ != _tmp5_) {
+#line 772 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = FALSE;
+#line 772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (enhance_single_command);
+#line 772 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 7922 "Commands.c"
+ }
+#line 775 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = TRUE;
+#line 775 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (enhance_single_command);
+#line 775 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 7930 "Commands.c"
+}
+
+
+static void enhance_single_command_class_init (EnhanceSingleCommandClass * klass) {
+#line 746 "/home/jens/Source/shotwell/src/Commands.vala"
+ enhance_single_command_parent_class = g_type_class_peek_parent (klass);
+#line 746 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((GenericPhotoTransformationCommandClass *) klass)->execute_on_photo = enhance_single_command_real_execute_on_photo;
+#line 746 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->compress = enhance_single_command_real_compress;
+#line 7941 "Commands.c"
+}
+
+
+static void enhance_single_command_instance_init (EnhanceSingleCommand * self) {
+}
+
+
+GType enhance_single_command_get_type (void) {
+ static volatile gsize enhance_single_command_type_id__volatile = 0;
+ if (g_once_init_enter (&enhance_single_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (EnhanceSingleCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) enhance_single_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EnhanceSingleCommand), 0, (GInstanceInitFunc) enhance_single_command_instance_init, NULL };
+ GType enhance_single_command_type_id;
+ enhance_single_command_type_id = g_type_register_static (TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, "EnhanceSingleCommand", &g_define_type_info, 0);
+ g_once_init_leave (&enhance_single_command_type_id__volatile, enhance_single_command_type_id);
+ }
+ return enhance_single_command_type_id__volatile;
+}
+
+
+EnhanceMultipleCommand* enhance_multiple_command_construct (GType object_type, GeeIterable* iter) {
+ EnhanceMultipleCommand * self = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+#line 780 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 781 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = iter;
+#line 781 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _ ("Enhancing");
+#line 781 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _ ("Undoing Enhance");
+#line 781 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (EnhanceMultipleCommand*) multiple_photo_transformation_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_, RESOURCES_ENHANCE_LABEL, RESOURCES_ENHANCE_TOOLTIP);
+#line 780 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 7978 "Commands.c"
+}
+
+
+EnhanceMultipleCommand* enhance_multiple_command_new (GeeIterable* iter) {
+#line 780 "/home/jens/Source/shotwell/src/Commands.vala"
+ return enhance_multiple_command_construct (TYPE_ENHANCE_MULTIPLE_COMMAND, iter);
+#line 7985 "Commands.c"
+}
+
+
+static void enhance_multiple_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ EnhanceMultipleCommand * self;
+ DataSource* _tmp0_ = NULL;
+#line 785 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ENHANCE_MULTIPLE_COMMAND, EnhanceMultipleCommand);
+#line 785 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 786 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 786 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_enhance (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo));
+#line 8000 "Commands.c"
+}
+
+
+static void enhance_multiple_command_class_init (EnhanceMultipleCommandClass * klass) {
+#line 779 "/home/jens/Source/shotwell/src/Commands.vala"
+ enhance_multiple_command_parent_class = g_type_class_peek_parent (klass);
+#line 779 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->execute_on_source = enhance_multiple_command_real_execute_on_source;
+#line 8009 "Commands.c"
+}
+
+
+static void enhance_multiple_command_instance_init (EnhanceMultipleCommand * self) {
+}
+
+
+GType enhance_multiple_command_get_type (void) {
+ static volatile gsize enhance_multiple_command_type_id__volatile = 0;
+ if (g_once_init_enter (&enhance_multiple_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (EnhanceMultipleCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) enhance_multiple_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EnhanceMultipleCommand), 0, (GInstanceInitFunc) enhance_multiple_command_instance_init, NULL };
+ GType enhance_multiple_command_type_id;
+ enhance_multiple_command_type_id = g_type_register_static (TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND, "EnhanceMultipleCommand", &g_define_type_info, 0);
+ g_once_init_leave (&enhance_multiple_command_type_id__volatile, enhance_multiple_command_type_id);
+ }
+ return enhance_multiple_command_type_id__volatile;
+}
+
+
+StraightenCommand* straighten_command_construct (GType object_type, Photo* photo, gdouble theta, Box* crop, const gchar* name, const gchar* explanation) {
+ StraightenCommand * self = NULL;
+ Photo* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ gdouble _tmp3_ = 0.0;
+ Box _tmp4_ = {0};
+#line 794 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PHOTO (photo), NULL);
+#line 794 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (crop != NULL, NULL);
+#line 794 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 794 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 795 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 795 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = name;
+#line 795 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = explanation;
+#line 795 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (StraightenCommand*) generic_photo_transformation_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_);
+#line 797 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = theta;
+#line 797 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->theta = _tmp3_;
+#line 798 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = *crop;
+#line 798 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->crop = _tmp4_;
+#line 794 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 8062 "Commands.c"
+}
+
+
+StraightenCommand* straighten_command_new (Photo* photo, gdouble theta, Box* crop, const gchar* name, const gchar* explanation) {
+#line 794 "/home/jens/Source/shotwell/src/Commands.vala"
+ return straighten_command_construct (TYPE_STRAIGHTEN_COMMAND, photo, theta, crop, name, explanation);
+#line 8069 "Commands.c"
+}
+
+
+static void straighten_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo) {
+ StraightenCommand * self;
+ DataCollection* collection = NULL;
+ Photo* _tmp0_ = NULL;
+ DataCollection* _tmp1_ = NULL;
+ DataCollection* _tmp2_ = NULL;
+ Photo* _tmp4_ = NULL;
+ gdouble _tmp5_ = 0.0;
+ Photo* _tmp6_ = NULL;
+ Box _tmp7_ = {0};
+ DataCollection* _tmp8_ = NULL;
+#line 801 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_STRAIGHTEN_COMMAND, StraightenCommand);
+#line 801 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PHOTO (photo));
+#line 803 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 803 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = data_object_get_membership (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_OBJECT, DataObject));
+#line 803 "/home/jens/Source/shotwell/src/Commands.vala"
+ collection = _tmp1_;
+#line 804 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = collection;
+#line 804 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ != NULL) {
+#line 8098 "Commands.c"
+ DataCollection* _tmp3_ = NULL;
+#line 805 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = collection;
+#line 805 "/home/jens/Source/shotwell/src/Commands.vala"
+ data_collection_freeze_notifications (_tmp3_);
+#line 8104 "Commands.c"
+ }
+#line 807 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = photo;
+#line 807 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->theta;
+#line 807 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_set_straighten (_tmp4_, _tmp5_);
+#line 808 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = photo;
+#line 808 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->crop;
+#line 808 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_set_crop (_tmp6_, &_tmp7_);
+#line 810 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = collection;
+#line 810 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp8_ != NULL) {
+#line 8122 "Commands.c"
+ DataCollection* _tmp9_ = NULL;
+#line 811 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = collection;
+#line 811 "/home/jens/Source/shotwell/src/Commands.vala"
+ data_collection_thaw_notifications (_tmp9_);
+#line 8128 "Commands.c"
+ }
+#line 801 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (collection);
+#line 8132 "Commands.c"
+}
+
+
+static void straighten_command_class_init (StraightenCommandClass * klass) {
+#line 790 "/home/jens/Source/shotwell/src/Commands.vala"
+ straighten_command_parent_class = g_type_class_peek_parent (klass);
+#line 790 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (StraightenCommandPrivate));
+#line 790 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((GenericPhotoTransformationCommandClass *) klass)->execute_on_photo = straighten_command_real_execute_on_photo;
+#line 790 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = straighten_command_finalize;
+#line 8145 "Commands.c"
+}
+
+
+static void straighten_command_instance_init (StraightenCommand * self) {
+#line 790 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = STRAIGHTEN_COMMAND_GET_PRIVATE (self);
+#line 8152 "Commands.c"
+}
+
+
+static void straighten_command_finalize (GObject* obj) {
+ StraightenCommand * self;
+#line 790 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_STRAIGHTEN_COMMAND, StraightenCommand);
+#line 790 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (straighten_command_parent_class)->finalize (obj);
+#line 8162 "Commands.c"
+}
+
+
+GType straighten_command_get_type (void) {
+ static volatile gsize straighten_command_type_id__volatile = 0;
+ if (g_once_init_enter (&straighten_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (StraightenCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) straighten_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (StraightenCommand), 0, (GInstanceInitFunc) straighten_command_instance_init, NULL };
+ GType straighten_command_type_id;
+ straighten_command_type_id = g_type_register_static (TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, "StraightenCommand", &g_define_type_info, 0);
+ g_once_init_leave (&straighten_command_type_id__volatile, straighten_command_type_id);
+ }
+ return straighten_command_type_id__volatile;
+}
+
+
+CropCommand* crop_command_construct (GType object_type, Photo* photo, Box* crop, const gchar* name, const gchar* explanation) {
+ CropCommand * self = NULL;
+ Photo* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ Box _tmp3_ = {0};
+#line 818 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PHOTO (photo), NULL);
+#line 818 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (crop != NULL, NULL);
+#line 818 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 818 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 819 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 819 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = name;
+#line 819 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = explanation;
+#line 819 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (CropCommand*) generic_photo_transformation_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_);
+#line 821 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = *crop;
+#line 821 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->crop = _tmp3_;
+#line 818 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 8206 "Commands.c"
+}
+
+
+CropCommand* crop_command_new (Photo* photo, Box* crop, const gchar* name, const gchar* explanation) {
+#line 818 "/home/jens/Source/shotwell/src/Commands.vala"
+ return crop_command_construct (TYPE_CROP_COMMAND, photo, crop, name, explanation);
+#line 8213 "Commands.c"
+}
+
+
+static void crop_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo) {
+ CropCommand * self;
+ Photo* _tmp0_ = NULL;
+ Box _tmp1_ = {0};
+#line 824 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_CROP_COMMAND, CropCommand);
+#line 824 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PHOTO (photo));
+#line 825 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 825 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->crop;
+#line 825 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_set_crop (_tmp0_, &_tmp1_);
+#line 8231 "Commands.c"
+}
+
+
+static void crop_command_class_init (CropCommandClass * klass) {
+#line 815 "/home/jens/Source/shotwell/src/Commands.vala"
+ crop_command_parent_class = g_type_class_peek_parent (klass);
+#line 815 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (CropCommandPrivate));
+#line 815 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((GenericPhotoTransformationCommandClass *) klass)->execute_on_photo = crop_command_real_execute_on_photo;
+#line 815 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = crop_command_finalize;
+#line 8244 "Commands.c"
+}
+
+
+static void crop_command_instance_init (CropCommand * self) {
+#line 815 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = CROP_COMMAND_GET_PRIVATE (self);
+#line 8251 "Commands.c"
+}
+
+
+static void crop_command_finalize (GObject* obj) {
+ CropCommand * self;
+#line 815 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_CROP_COMMAND, CropCommand);
+#line 815 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (crop_command_parent_class)->finalize (obj);
+#line 8261 "Commands.c"
+}
+
+
+GType crop_command_get_type (void) {
+ static volatile gsize crop_command_type_id__volatile = 0;
+ if (g_once_init_enter (&crop_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (CropCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) crop_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (CropCommand), 0, (GInstanceInitFunc) crop_command_instance_init, NULL };
+ GType crop_command_type_id;
+ crop_command_type_id = g_type_register_static (TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, "CropCommand", &g_define_type_info, 0);
+ g_once_init_leave (&crop_command_type_id__volatile, crop_command_type_id);
+ }
+ return crop_command_type_id__volatile;
+}
+
+
+static gpointer _pixel_transformation_bundle_ref0 (gpointer self) {
+#line 836 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self ? pixel_transformation_bundle_ref (self) : NULL;
+#line 8280 "Commands.c"
+}
+
+
+AdjustColorsSingleCommand* adjust_colors_single_command_construct (GType object_type, Photo* photo, PixelTransformationBundle* transformations, const gchar* name, const gchar* explanation) {
+ AdjustColorsSingleCommand * self = NULL;
+ Photo* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ PixelTransformationBundle* _tmp3_ = NULL;
+ PixelTransformationBundle* _tmp4_ = NULL;
+#line 832 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PHOTO (photo), NULL);
+#line 832 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PIXEL_TRANSFORMATION_BUNDLE (transformations), NULL);
+#line 832 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 832 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 834 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 834 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = name;
+#line 834 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = explanation;
+#line 834 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (AdjustColorsSingleCommand*) generic_photo_transformation_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_);
+#line 836 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = transformations;
+#line 836 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _pixel_transformation_bundle_ref0 (_tmp3_);
+#line 836 "/home/jens/Source/shotwell/src/Commands.vala"
+ _pixel_transformation_bundle_unref0 (self->priv->transformations);
+#line 836 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->transformations = _tmp4_;
+#line 832 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 8317 "Commands.c"
+}
+
+
+AdjustColorsSingleCommand* adjust_colors_single_command_new (Photo* photo, PixelTransformationBundle* transformations, const gchar* name, const gchar* explanation) {
+#line 832 "/home/jens/Source/shotwell/src/Commands.vala"
+ return adjust_colors_single_command_construct (TYPE_ADJUST_COLORS_SINGLE_COMMAND, photo, transformations, name, explanation);
+#line 8324 "Commands.c"
+}
+
+
+static void adjust_colors_single_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo) {
+ AdjustColorsSingleCommand * self;
+ AppWindow* _tmp0_ = NULL;
+ AppWindow* _tmp1_ = NULL;
+ Photo* _tmp2_ = NULL;
+ PixelTransformationBundle* _tmp3_ = NULL;
+ AppWindow* _tmp4_ = NULL;
+ AppWindow* _tmp5_ = NULL;
+#line 839 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADJUST_COLORS_SINGLE_COMMAND, AdjustColorsSingleCommand);
+#line 839 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PHOTO (photo));
+#line 840 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = app_window_get_instance ();
+#line 840 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 840 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_busy_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_PAGE_WINDOW, PageWindow));
+#line 840 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp1_);
+#line 842 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = photo;
+#line 842 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->transformations;
+#line 842 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_set_color_adjustments (_tmp2_, _tmp3_);
+#line 844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = app_window_get_instance ();
+#line 844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 844 "/home/jens/Source/shotwell/src/Commands.vala"
+ page_window_set_normal_cursor (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_PAGE_WINDOW, PageWindow));
+#line 844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp5_);
+#line 8362 "Commands.c"
+}
+
+
+static gboolean adjust_colors_single_command_real_can_compress (GenericPhotoTransformationCommand* base, Command* command) {
+ AdjustColorsSingleCommand * self;
+ gboolean result = FALSE;
+ Command* _tmp0_ = NULL;
+#line 847 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADJUST_COLORS_SINGLE_COMMAND, AdjustColorsSingleCommand);
+#line 847 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_COMMAND (command), FALSE);
+#line 848 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command;
+#line 848 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, TYPE_ADJUST_COLORS_SINGLE_COMMAND);
+#line 848 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 8380 "Commands.c"
+}
+
+
+static void adjust_colors_single_command_class_init (AdjustColorsSingleCommandClass * klass) {
+#line 829 "/home/jens/Source/shotwell/src/Commands.vala"
+ adjust_colors_single_command_parent_class = g_type_class_peek_parent (klass);
+#line 829 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (AdjustColorsSingleCommandPrivate));
+#line 829 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((GenericPhotoTransformationCommandClass *) klass)->execute_on_photo = adjust_colors_single_command_real_execute_on_photo;
+#line 829 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((GenericPhotoTransformationCommandClass *) klass)->can_compress = adjust_colors_single_command_real_can_compress;
+#line 829 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = adjust_colors_single_command_finalize;
+#line 8395 "Commands.c"
+}
+
+
+static void adjust_colors_single_command_instance_init (AdjustColorsSingleCommand * self) {
+#line 829 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = ADJUST_COLORS_SINGLE_COMMAND_GET_PRIVATE (self);
+#line 8402 "Commands.c"
+}
+
+
+static void adjust_colors_single_command_finalize (GObject* obj) {
+ AdjustColorsSingleCommand * self;
+#line 829 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ADJUST_COLORS_SINGLE_COMMAND, AdjustColorsSingleCommand);
+#line 830 "/home/jens/Source/shotwell/src/Commands.vala"
+ _pixel_transformation_bundle_unref0 (self->priv->transformations);
+#line 829 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (adjust_colors_single_command_parent_class)->finalize (obj);
+#line 8414 "Commands.c"
+}
+
+
+GType adjust_colors_single_command_get_type (void) {
+ static volatile gsize adjust_colors_single_command_type_id__volatile = 0;
+ if (g_once_init_enter (&adjust_colors_single_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (AdjustColorsSingleCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) adjust_colors_single_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AdjustColorsSingleCommand), 0, (GInstanceInitFunc) adjust_colors_single_command_instance_init, NULL };
+ GType adjust_colors_single_command_type_id;
+ adjust_colors_single_command_type_id = g_type_register_static (TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, "AdjustColorsSingleCommand", &g_define_type_info, 0);
+ g_once_init_leave (&adjust_colors_single_command_type_id__volatile, adjust_colors_single_command_type_id);
+ }
+ return adjust_colors_single_command_type_id__volatile;
+}
+
+
+AdjustColorsMultipleCommand* adjust_colors_multiple_command_construct (GType object_type, GeeIterable* iter, PixelTransformationBundle* transformations, const gchar* name, const gchar* explanation) {
+ AdjustColorsMultipleCommand * self = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ const gchar* _tmp4_ = NULL;
+ PixelTransformationBundle* _tmp5_ = NULL;
+ PixelTransformationBundle* _tmp6_ = NULL;
+#line 855 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 855 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PIXEL_TRANSFORMATION_BUNDLE (transformations), NULL);
+#line 855 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 855 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = iter;
+#line 857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _ ("Applying Color Transformations");
+#line 857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _ ("Undoing Color Transformations");
+#line 857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = name;
+#line 857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = explanation;
+#line 857 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (AdjustColorsMultipleCommand*) multiple_photo_transformation_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_, _tmp3_, _tmp4_);
+#line 860 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = transformations;
+#line 860 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _pixel_transformation_bundle_ref0 (_tmp5_);
+#line 860 "/home/jens/Source/shotwell/src/Commands.vala"
+ _pixel_transformation_bundle_unref0 (self->priv->transformations);
+#line 860 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->transformations = _tmp6_;
+#line 855 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 8469 "Commands.c"
+}
+
+
+AdjustColorsMultipleCommand* adjust_colors_multiple_command_new (GeeIterable* iter, PixelTransformationBundle* transformations, const gchar* name, const gchar* explanation) {
+#line 855 "/home/jens/Source/shotwell/src/Commands.vala"
+ return adjust_colors_multiple_command_construct (TYPE_ADJUST_COLORS_MULTIPLE_COMMAND, iter, transformations, name, explanation);
+#line 8476 "Commands.c"
+}
+
+
+static void adjust_colors_multiple_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ AdjustColorsMultipleCommand * self;
+ DataSource* _tmp0_ = NULL;
+ PixelTransformationBundle* _tmp1_ = NULL;
+#line 863 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADJUST_COLORS_MULTIPLE_COMMAND, AdjustColorsMultipleCommand);
+#line 863 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 864 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 864 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->transformations;
+#line 864 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_set_color_adjustments (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PHOTO, Photo), _tmp1_);
+#line 8494 "Commands.c"
+}
+
+
+static void adjust_colors_multiple_command_class_init (AdjustColorsMultipleCommandClass * klass) {
+#line 852 "/home/jens/Source/shotwell/src/Commands.vala"
+ adjust_colors_multiple_command_parent_class = g_type_class_peek_parent (klass);
+#line 852 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (AdjustColorsMultipleCommandPrivate));
+#line 852 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->execute_on_source = adjust_colors_multiple_command_real_execute_on_source;
+#line 852 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = adjust_colors_multiple_command_finalize;
+#line 8507 "Commands.c"
+}
+
+
+static void adjust_colors_multiple_command_instance_init (AdjustColorsMultipleCommand * self) {
+#line 852 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = ADJUST_COLORS_MULTIPLE_COMMAND_GET_PRIVATE (self);
+#line 8514 "Commands.c"
+}
+
+
+static void adjust_colors_multiple_command_finalize (GObject* obj) {
+ AdjustColorsMultipleCommand * self;
+#line 852 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ADJUST_COLORS_MULTIPLE_COMMAND, AdjustColorsMultipleCommand);
+#line 853 "/home/jens/Source/shotwell/src/Commands.vala"
+ _pixel_transformation_bundle_unref0 (self->priv->transformations);
+#line 852 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (adjust_colors_multiple_command_parent_class)->finalize (obj);
+#line 8526 "Commands.c"
+}
+
+
+GType adjust_colors_multiple_command_get_type (void) {
+ static volatile gsize adjust_colors_multiple_command_type_id__volatile = 0;
+ if (g_once_init_enter (&adjust_colors_multiple_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (AdjustColorsMultipleCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) adjust_colors_multiple_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AdjustColorsMultipleCommand), 0, (GInstanceInitFunc) adjust_colors_multiple_command_instance_init, NULL };
+ GType adjust_colors_multiple_command_type_id;
+ adjust_colors_multiple_command_type_id = g_type_register_static (TYPE_MULTIPLE_PHOTO_TRANSFORMATION_COMMAND, "AdjustColorsMultipleCommand", &g_define_type_info, 0);
+ g_once_init_leave (&adjust_colors_multiple_command_type_id__volatile, adjust_colors_multiple_command_type_id);
+ }
+ return adjust_colors_multiple_command_type_id__volatile;
+}
+
+
+RedeyeCommand* redeye_command_construct (GType object_type, Photo* photo, EditingToolsRedeyeInstance* redeye_instance, const gchar* name, const gchar* explanation) {
+ RedeyeCommand * self = NULL;
+ Photo* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ EditingToolsRedeyeInstance _tmp3_ = {0};
+#line 871 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_PHOTO (photo), NULL);
+#line 871 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (redeye_instance != NULL, NULL);
+#line 871 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 871 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 873 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 873 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = name;
+#line 873 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = explanation;
+#line 873 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (RedeyeCommand*) generic_photo_transformation_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_);
+#line 875 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = *redeye_instance;
+#line 875 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->redeye_instance = _tmp3_;
+#line 871 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 8570 "Commands.c"
+}
+
+
+RedeyeCommand* redeye_command_new (Photo* photo, EditingToolsRedeyeInstance* redeye_instance, const gchar* name, const gchar* explanation) {
+#line 871 "/home/jens/Source/shotwell/src/Commands.vala"
+ return redeye_command_construct (TYPE_REDEYE_COMMAND, photo, redeye_instance, name, explanation);
+#line 8577 "Commands.c"
+}
+
+
+static void redeye_command_real_execute_on_photo (GenericPhotoTransformationCommand* base, Photo* photo) {
+ RedeyeCommand * self;
+ Photo* _tmp0_ = NULL;
+ EditingToolsRedeyeInstance _tmp1_ = {0};
+#line 878 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_REDEYE_COMMAND, RedeyeCommand);
+#line 878 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_PHOTO (photo));
+#line 879 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = photo;
+#line 879 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->redeye_instance;
+#line 879 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_add_redeye_instance (_tmp0_, &_tmp1_);
+#line 8595 "Commands.c"
+}
+
+
+static void redeye_command_class_init (RedeyeCommandClass * klass) {
+#line 868 "/home/jens/Source/shotwell/src/Commands.vala"
+ redeye_command_parent_class = g_type_class_peek_parent (klass);
+#line 868 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (RedeyeCommandPrivate));
+#line 868 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((GenericPhotoTransformationCommandClass *) klass)->execute_on_photo = redeye_command_real_execute_on_photo;
+#line 868 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = redeye_command_finalize;
+#line 8608 "Commands.c"
+}
+
+
+static void redeye_command_instance_init (RedeyeCommand * self) {
+#line 868 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = REDEYE_COMMAND_GET_PRIVATE (self);
+#line 8615 "Commands.c"
+}
+
+
+static void redeye_command_finalize (GObject* obj) {
+ RedeyeCommand * self;
+#line 868 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_REDEYE_COMMAND, RedeyeCommand);
+#line 868 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (redeye_command_parent_class)->finalize (obj);
+#line 8625 "Commands.c"
+}
+
+
+GType redeye_command_get_type (void) {
+ static volatile gsize redeye_command_type_id__volatile = 0;
+ if (g_once_init_enter (&redeye_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (RedeyeCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) redeye_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RedeyeCommand), 0, (GInstanceInitFunc) redeye_command_instance_init, NULL };
+ GType redeye_command_type_id;
+ redeye_command_type_id = g_type_register_static (TYPE_GENERIC_PHOTO_TRANSFORMATION_COMMAND, "RedeyeCommand", &g_define_type_info, 0);
+ g_once_init_leave (&redeye_command_type_id__volatile, redeye_command_type_id);
+ }
+ return redeye_command_type_id__volatile;
+}
+
+
+MovePhotosCommand* move_photos_command_construct (GType object_type, const gchar* name, const gchar* explanation) {
+ MovePhotosCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+#line 967 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 967 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 968 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = name;
+#line 968 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = explanation;
+#line 968 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (MovePhotosCommand*) command_construct (object_type, _tmp0_, _tmp1_);
+#line 967 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 8657 "Commands.c"
+}
+
+
+static void move_photos_command_real_prepare (Command* base) {
+ MovePhotosCommand * self;
+ MovePhotosCommandRealMovePhotosCommand* _tmp0_ = NULL;
+ MovePhotosCommandRealMovePhotosCommand* _tmp1_ = NULL;
+#line 971 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand);
+#line 972 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->real_command;
+#line 972 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ != NULL, "real_command != null");
+#line 973 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->real_command;
+#line 973 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_prepare (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_COMMAND, Command));
+#line 8675 "Commands.c"
+}
+
+
+static void move_photos_command_real_execute (Command* base) {
+ MovePhotosCommand * self;
+ MovePhotosCommandRealMovePhotosCommand* _tmp0_ = NULL;
+ MovePhotosCommandRealMovePhotosCommand* _tmp1_ = NULL;
+#line 976 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand);
+#line 977 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->real_command;
+#line 977 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ != NULL, "real_command != null");
+#line 978 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->real_command;
+#line 978 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_execute (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_COMMAND, Command));
+#line 8693 "Commands.c"
+}
+
+
+static void move_photos_command_real_undo (Command* base) {
+ MovePhotosCommand * self;
+ MovePhotosCommandRealMovePhotosCommand* _tmp0_ = NULL;
+ MovePhotosCommandRealMovePhotosCommand* _tmp1_ = NULL;
+#line 981 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand);
+#line 982 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->real_command;
+#line 982 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ != NULL, "real_command != null");
+#line 983 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->real_command;
+#line 983 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_undo (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_COMMAND, Command));
+#line 8711 "Commands.c"
+}
+
+
+static void _move_photos_command_real_move_photos_command_on_proxy_broken_source_proxy_broken (SourceProxy* _sender, gpointer self) {
+#line 914 "/home/jens/Source/shotwell/src/Commands.vala"
+ move_photos_command_real_move_photos_command_on_proxy_broken ((MovePhotosCommandRealMovePhotosCommand*) self);
+#line 8718 "Commands.c"
+}
+
+
+static gpointer _source_proxy_ref0 (gpointer self) {
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self ? source_proxy_ref (self) : NULL;
+#line 8725 "Commands.c"
+}
+
+
+MovePhotosCommandRealMovePhotosCommand* move_photos_command_real_move_photos_command_construct (GType object_type, Event* new_event, GeeIterable* source_views, const gchar* progress_text, const gchar* undo_progress_text, const gchar* name, const gchar* explanation) {
+ MovePhotosCommandRealMovePhotosCommand * self = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ const gchar* _tmp4_ = NULL;
+ Event* _tmp30_ = NULL;
+ SourceProxy* _tmp31_ = NULL;
+ SourceProxy* _tmp32_ = NULL;
+#line 891 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail ((new_event == NULL) || IS_EVENT (new_event), NULL);
+#line 891 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (source_views), NULL);
+#line 891 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (progress_text != NULL, NULL);
+#line 891 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (undo_progress_text != NULL, NULL);
+#line 891 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 891 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (explanation != NULL, NULL);
+#line 893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source_views;
+#line 893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = progress_text;
+#line 893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = undo_progress_text;
+#line 893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = name;
+#line 893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = explanation;
+#line 893 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (MovePhotosCommandRealMovePhotosCommand*) multiple_data_source_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_, _tmp3_, _tmp4_);
+#line 8763 "Commands.c"
+ {
+ GeeArrayList* _source_list = NULL;
+ GeeArrayList* _tmp5_ = NULL;
+ GeeArrayList* _tmp6_ = NULL;
+ gint _source_size = 0;
+ GeeArrayList* _tmp7_ = NULL;
+ gint _tmp8_ = 0;
+ gint _tmp9_ = 0;
+ gint _source_index = 0;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand)->source_list;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _g_object_ref0 (_tmp5_);
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_list = _tmp6_;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _source_list;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _tmp8_;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_size = _tmp9_;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_index = -1;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 8791 "Commands.c"
+ gint _tmp10_ = 0;
+ gint _tmp11_ = 0;
+ gint _tmp12_ = 0;
+ DataSource* source = NULL;
+ GeeArrayList* _tmp13_ = NULL;
+ gint _tmp14_ = 0;
+ gpointer _tmp15_ = NULL;
+ MediaSource* current_media = NULL;
+ DataSource* _tmp16_ = NULL;
+ MediaSource* _tmp17_ = NULL;
+ Event* old_event = NULL;
+ MediaSource* _tmp18_ = NULL;
+ Event* _tmp19_ = NULL;
+ SourceProxy* _tmp20_ = NULL;
+ Event* _tmp21_ = NULL;
+ SourceProxy* old_event_proxy = NULL;
+ SourceProxy* _tmp24_ = NULL;
+ SourceProxy* _tmp25_ = NULL;
+ GeeHashMap* _tmp27_ = NULL;
+ MediaSource* _tmp28_ = NULL;
+ SourceProxy* _tmp29_ = NULL;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _source_index;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_index = _tmp10_ + 1;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _source_index;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = _source_size;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp11_ < _tmp12_)) {
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 8825 "Commands.c"
+ }
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _source_list;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _source_index;
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp14_);
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp15_;
+#line 897 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = source;
+#line 897 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 897 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_media = _tmp17_;
+#line 898 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = current_media;
+#line 898 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = media_source_get_event (_tmp18_);
+#line 898 "/home/jens/Source/shotwell/src/Commands.vala"
+ old_event = _tmp19_;
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = old_event;
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp21_ != NULL) {
+#line 8851 "Commands.c"
+ Event* _tmp22_ = NULL;
+ SourceProxy* _tmp23_ = NULL;
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = old_event;
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, TYPE_PROXYABLE, Proxyable));
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp20_);
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = _tmp23_;
+#line 8862 "Commands.c"
+ } else {
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp20_);
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = NULL;
+#line 8868 "Commands.c"
+ }
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _source_proxy_ref0 (_tmp20_);
+#line 899 "/home/jens/Source/shotwell/src/Commands.vala"
+ old_event_proxy = _tmp24_;
+#line 902 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = old_event_proxy;
+#line 902 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp25_ != NULL) {
+#line 8878 "Commands.c"
+ SourceProxy* _tmp26_ = NULL;
+#line 903 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = old_event_proxy;
+#line 903 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp26_, "broken", (GCallback) _move_photos_command_real_move_photos_command_on_proxy_broken_source_proxy_broken, self, 0);
+#line 8884 "Commands.c"
+ }
+#line 905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = self->priv->old_events;
+#line 905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = current_media;
+#line 905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = old_event_proxy;
+#line 905 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp28_, _tmp29_);
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (old_event_proxy);
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp20_);
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (old_event);
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (current_media);
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 8904 "Commands.c"
+ }
+#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_list);
+#line 8908 "Commands.c"
+ }
+#line 909 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = new_event;
+#line 909 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, TYPE_PROXYABLE, Proxyable));
+#line 909 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (self->priv->new_event_proxy);
+#line 909 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_event_proxy = _tmp31_;
+#line 910 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = self->priv->new_event_proxy;
+#line 910 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp32_, "broken", (GCallback) _move_photos_command_real_move_photos_command_on_proxy_broken_source_proxy_broken, self, 0);
+#line 891 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 8924 "Commands.c"
+}
+
+
+MovePhotosCommandRealMovePhotosCommand* move_photos_command_real_move_photos_command_new (Event* new_event, GeeIterable* source_views, const gchar* progress_text, const gchar* undo_progress_text, const gchar* name, const gchar* explanation) {
+#line 891 "/home/jens/Source/shotwell/src/Commands.vala"
+ return move_photos_command_real_move_photos_command_construct (MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND, new_event, source_views, progress_text, undo_progress_text, name, explanation);
+#line 8931 "Commands.c"
+}
+
+
+static void move_photos_command_real_move_photos_command_real_execute (Command* base) {
+ MovePhotosCommandRealMovePhotosCommand * self;
+ LibraryWindow* _tmp0_ = NULL;
+ LibraryWindow* _tmp1_ = NULL;
+ Page* _tmp2_ = NULL;
+ Page* _tmp3_ = NULL;
+ gboolean _tmp4_ = FALSE;
+#line 922 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND, MovePhotosCommandRealMovePhotosCommand);
+#line 924 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = library_window_get_app ();
+#line 924 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 924 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = page_window_get_current_page (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_PAGE_WINDOW, PageWindow));
+#line 924 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 924 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, TYPE_EVENT_PAGE);
+#line 924 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp3_);
+#line 924 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp1_);
+#line 924 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_) {
+#line 8960 "Commands.c"
+ Event* evt = NULL;
+ LibraryWindow* _tmp5_ = NULL;
+ LibraryWindow* _tmp6_ = NULL;
+ Page* _tmp7_ = NULL;
+ EventPage* _tmp8_ = NULL;
+ Event* _tmp9_ = NULL;
+ Event* _tmp10_ = NULL;
+ Event* _tmp11_ = NULL;
+ gint _tmp12_ = 0;
+ GeeArrayList* _tmp13_ = NULL;
+ gint _tmp14_ = 0;
+ gint _tmp15_ = 0;
+#line 925 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = library_window_get_app ();
+#line 925 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 925 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = page_window_get_current_page (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_PAGE_WINDOW, PageWindow));
+#line 925 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_EVENT_PAGE, EventPage);
+#line 925 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = event_page_get_event (_tmp8_);
+#line 925 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_;
+#line 925 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp8_);
+#line 925 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp6_);
+#line 925 "/home/jens/Source/shotwell/src/Commands.vala"
+ evt = _tmp10_;
+#line 928 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = evt;
+#line 928 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = event_source_get_media_count (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_EVENT_SOURCE, EventSource));
+#line 928 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand)->source_list;
+#line 928 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 928 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _tmp14_;
+#line 928 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp12_ == _tmp15_) {
+#line 9003 "Commands.c"
+ LibraryWindow* _tmp16_ = NULL;
+ LibraryWindow* _tmp17_ = NULL;
+ SourceProxy* _tmp18_ = NULL;
+ DataSource* _tmp19_ = NULL;
+ Event* _tmp20_ = NULL;
+#line 931 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = library_window_get_app ();
+#line 931 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _tmp16_;
+#line 931 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = self->priv->new_event_proxy;
+#line 931 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = source_proxy_get_source (_tmp18_);
+#line 931 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, TYPE_EVENT, Event);
+#line 931 "/home/jens/Source/shotwell/src/Commands.vala"
+ library_window_switch_to_event (_tmp17_, _tmp20_);
+#line 931 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp20_);
+#line 931 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp17_);
+#line 9025 "Commands.c"
+ }
+#line 924 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (evt);
+#line 9029 "Commands.c"
+ } else {
+ SourceProxy* _tmp21_ = NULL;
+ DataSource* _tmp22_ = NULL;
+ Event* _tmp23_ = NULL;
+ gint _tmp24_ = 0;
+ gboolean _tmp25_ = FALSE;
+#line 937 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = self->priv->new_event_proxy;
+#line 937 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = source_proxy_get_source (_tmp21_);
+#line 937 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, TYPE_EVENT, Event);
+#line 937 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = event_source_get_media_count (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, TYPE_EVENT_SOURCE, EventSource));
+#line 937 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = _tmp24_ == 0;
+#line 937 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp23_);
+#line 937 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp25_) {
+#line 9050 "Commands.c"
+ LibraryWindow* _tmp26_ = NULL;
+ LibraryWindow* _tmp27_ = NULL;
+ SourceProxy* _tmp28_ = NULL;
+ DataSource* _tmp29_ = NULL;
+ Event* _tmp30_ = NULL;
+#line 939 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = library_window_get_app ();
+#line 939 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = _tmp26_;
+#line 939 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = self->priv->new_event_proxy;
+#line 939 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = source_proxy_get_source (_tmp28_);
+#line 939 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, TYPE_EVENT, Event);
+#line 939 "/home/jens/Source/shotwell/src/Commands.vala"
+ library_window_switch_to_event (_tmp27_, _tmp30_);
+#line 939 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp30_);
+#line 939 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp27_);
+#line 9072 "Commands.c"
+ }
+ }
+#line 946 "/home/jens/Source/shotwell/src/Commands.vala"
+ COMMAND_CLASS (move_photos_command_real_move_photos_command_parent_class)->execute (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand), TYPE_COMMAND, Command));
+#line 9077 "Commands.c"
+}
+
+
+static void move_photos_command_real_move_photos_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ MovePhotosCommandRealMovePhotosCommand * self;
+ DataSource* _tmp0_ = NULL;
+ SourceProxy* _tmp1_ = NULL;
+ DataSource* _tmp2_ = NULL;
+ Event* _tmp3_ = NULL;
+#line 949 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND, MovePhotosCommandRealMovePhotosCommand);
+#line 949 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 950 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 950 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->new_event_proxy;
+#line 950 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = source_proxy_get_source (_tmp1_);
+#line 950 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_EVENT, Event);
+#line 950 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_event (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MEDIA_SOURCE, MediaSource), _tmp3_);
+#line 950 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp3_);
+#line 9103 "Commands.c"
+}
+
+
+static void move_photos_command_real_move_photos_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ MovePhotosCommandRealMovePhotosCommand * self;
+ MediaSource* current_media = NULL;
+ DataSource* _tmp0_ = NULL;
+ MediaSource* _tmp1_ = NULL;
+ SourceProxy* event_proxy = NULL;
+ GeeHashMap* _tmp2_ = NULL;
+ MediaSource* _tmp3_ = NULL;
+ gpointer _tmp4_ = NULL;
+ Event* _tmp5_ = NULL;
+ SourceProxy* _tmp6_ = NULL;
+ MediaSource* _tmp9_ = NULL;
+#line 953 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND, MovePhotosCommandRealMovePhotosCommand);
+#line 953 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 954 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 954 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 954 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_media = _tmp1_;
+#line 955 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->old_events;
+#line 955 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = current_media;
+#line 955 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp3_);
+#line 955 "/home/jens/Source/shotwell/src/Commands.vala"
+ event_proxy = (SourceProxy*) _tmp4_;
+#line 957 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = event_proxy;
+#line 957 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp6_ != NULL) {
+#line 9141 "Commands.c"
+ SourceProxy* _tmp7_ = NULL;
+ DataSource* _tmp8_ = NULL;
+#line 957 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = event_proxy;
+#line 957 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = source_proxy_get_source (_tmp7_);
+#line 957 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp5_);
+#line 957 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_EVENT, Event);
+#line 9152 "Commands.c"
+ } else {
+#line 957 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp5_);
+#line 957 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = NULL;
+#line 9158 "Commands.c"
+ }
+#line 957 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = current_media;
+#line 957 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_event (_tmp9_, _tmp5_);
+#line 953 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp5_);
+#line 953 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (event_proxy);
+#line 953 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (current_media);
+#line 9170 "Commands.c"
+}
+
+
+static void move_photos_command_real_move_photos_command_on_proxy_broken (MovePhotosCommandRealMovePhotosCommand* self) {
+ CommandManager* _tmp0_ = NULL;
+ CommandManager* _tmp1_ = NULL;
+#line 960 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (MOVE_PHOTOS_COMMAND_IS_REAL_MOVE_PHOTOS_COMMAND (self));
+#line 961 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 961 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 961 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp1_);
+#line 961 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp1_);
+#line 9187 "Commands.c"
+}
+
+
+static void move_photos_command_real_move_photos_command_class_init (MovePhotosCommandRealMovePhotosCommandClass * klass) {
+#line 886 "/home/jens/Source/shotwell/src/Commands.vala"
+ move_photos_command_real_move_photos_command_parent_class = g_type_class_peek_parent (klass);
+#line 886 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (MovePhotosCommandRealMovePhotosCommandPrivate));
+#line 886 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = move_photos_command_real_move_photos_command_real_execute;
+#line 886 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->execute_on_source = move_photos_command_real_move_photos_command_real_execute_on_source;
+#line 886 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->undo_on_source = move_photos_command_real_move_photos_command_real_undo_on_source;
+#line 886 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = move_photos_command_real_move_photos_command_finalize;
+#line 9204 "Commands.c"
+}
+
+
+static void move_photos_command_real_move_photos_command_instance_init (MovePhotosCommandRealMovePhotosCommand * self) {
+ GeeHashMap* _tmp0_ = NULL;
+#line 886 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = MOVE_PHOTOS_COMMAND_REAL_MOVE_PHOTOS_COMMAND_GET_PRIVATE (self);
+#line 887 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_event_proxy = NULL;
+#line 888 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_map_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, TYPE_SOURCE_PROXY, (GBoxedCopyFunc) source_proxy_ref, source_proxy_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 888 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->old_events = _tmp0_;
+#line 9218 "Commands.c"
+}
+
+
+static void move_photos_command_real_move_photos_command_finalize (GObject* obj) {
+ MovePhotosCommandRealMovePhotosCommand * self;
+ SourceProxy* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+#line 886 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, MOVE_PHOTOS_COMMAND_TYPE_REAL_MOVE_PHOTOS_COMMAND, MovePhotosCommandRealMovePhotosCommand);
+#line 914 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->new_event_proxy;
+#line 914 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_SOURCE_PROXY, &_tmp1_, NULL, FALSE);
+#line 914 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp0_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _move_photos_command_real_move_photos_command_on_proxy_broken_source_proxy_broken, self);
+#line 9234 "Commands.c"
+ {
+ GeeIterator* _proxy_it = NULL;
+ GeeHashMap* _tmp2_ = NULL;
+ GeeCollection* _tmp3_ = NULL;
+ GeeCollection* _tmp4_ = NULL;
+ GeeCollection* _tmp5_ = NULL;
+ GeeIterator* _tmp6_ = NULL;
+ GeeIterator* _tmp7_ = NULL;
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->old_events;
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_abstract_map_get_values (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_MAP, GeeMap));
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _tmp6_;
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp5_);
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_it = _tmp7_;
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 9261 "Commands.c"
+ GeeIterator* _tmp8_ = NULL;
+ gboolean _tmp9_ = FALSE;
+ SourceProxy* proxy = NULL;
+ GeeIterator* _tmp10_ = NULL;
+ gpointer _tmp11_ = NULL;
+ SourceProxy* _tmp12_ = NULL;
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _proxy_it;
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_iterator_next (_tmp8_);
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp9_) {
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 9276 "Commands.c"
+ }
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _proxy_it;
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = gee_iterator_get (_tmp10_);
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = (SourceProxy*) _tmp11_;
+#line 917 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = proxy;
+#line 917 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp12_ != NULL) {
+#line 9288 "Commands.c"
+ SourceProxy* _tmp13_ = NULL;
+ guint _tmp14_ = 0U;
+#line 918 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = proxy;
+#line 918 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_SOURCE_PROXY, &_tmp14_, NULL, FALSE);
+#line 918 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp13_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp14_, 0, NULL, (GCallback) _move_photos_command_real_move_photos_command_on_proxy_broken_source_proxy_broken, self);
+#line 9297 "Commands.c"
+ }
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 9301 "Commands.c"
+ }
+#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_proxy_it);
+#line 9305 "Commands.c"
+ }
+#line 887 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (self->priv->new_event_proxy);
+#line 888 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->old_events);
+#line 886 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (move_photos_command_real_move_photos_command_parent_class)->finalize (obj);
+#line 9313 "Commands.c"
+}
+
+
+GType move_photos_command_real_move_photos_command_get_type (void) {
+ static volatile gsize move_photos_command_real_move_photos_command_type_id__volatile = 0;
+ if (g_once_init_enter (&move_photos_command_real_move_photos_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (MovePhotosCommandRealMovePhotosCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) move_photos_command_real_move_photos_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MovePhotosCommandRealMovePhotosCommand), 0, (GInstanceInitFunc) move_photos_command_real_move_photos_command_instance_init, NULL };
+ GType move_photos_command_real_move_photos_command_type_id;
+ move_photos_command_real_move_photos_command_type_id = g_type_register_static (TYPE_MULTIPLE_DATA_SOURCE_COMMAND, "MovePhotosCommandRealMovePhotosCommand", &g_define_type_info, 0);
+ g_once_init_leave (&move_photos_command_real_move_photos_command_type_id__volatile, move_photos_command_real_move_photos_command_type_id);
+ }
+ return move_photos_command_real_move_photos_command_type_id__volatile;
+}
+
+
+static void move_photos_command_class_init (MovePhotosCommandClass * klass) {
+#line 883 "/home/jens/Source/shotwell/src/Commands.vala"
+ move_photos_command_parent_class = g_type_class_peek_parent (klass);
+#line 883 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->prepare = move_photos_command_real_prepare;
+#line 883 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = move_photos_command_real_execute;
+#line 883 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = move_photos_command_real_undo;
+#line 883 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = move_photos_command_finalize;
+#line 9340 "Commands.c"
+}
+
+
+static void move_photos_command_instance_init (MovePhotosCommand * self) {
+}
+
+
+static void move_photos_command_finalize (GObject* obj) {
+ MovePhotosCommand * self;
+#line 883 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand);
+#line 965 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->real_command);
+#line 883 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (move_photos_command_parent_class)->finalize (obj);
+#line 9356 "Commands.c"
+}
+
+
+GType move_photos_command_get_type (void) {
+ static volatile gsize move_photos_command_type_id__volatile = 0;
+ if (g_once_init_enter (&move_photos_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (MovePhotosCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) move_photos_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MovePhotosCommand), 0, (GInstanceInitFunc) move_photos_command_instance_init, NULL };
+ GType move_photos_command_type_id;
+ move_photos_command_type_id = g_type_register_static (TYPE_COMMAND, "MovePhotosCommand", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
+ g_once_init_leave (&move_photos_command_type_id__volatile, move_photos_command_type_id);
+ }
+ return move_photos_command_type_id__volatile;
+}
+
+
+NewEventCommand* new_event_command_construct (GType object_type, GeeIterable* iter) {
+ NewEventCommand * self = NULL;
+ MediaSource* key_source = NULL;
+ MediaSource* _tmp11_ = NULL;
+ Event* new_event = NULL;
+ MediaSource* _tmp12_ = NULL;
+ Event* _tmp13_ = NULL;
+ GeeIterable* _tmp14_ = NULL;
+ const gchar* _tmp15_ = NULL;
+ const gchar* _tmp16_ = NULL;
+ MovePhotosCommandRealMovePhotosCommand* _tmp17_ = NULL;
+#line 988 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 989 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (NewEventCommand*) move_photos_command_construct (object_type, RESOURCES_NEW_EVENT_LABEL, "");
+#line 992 "/home/jens/Source/shotwell/src/Commands.vala"
+ key_source = NULL;
+#line 9389 "Commands.c"
+ {
+ GeeIterator* _view_it = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = iter;
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_iterable_iterator (_tmp0_);
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ _view_it = _tmp1_;
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 9402 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ DataView* view = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ MediaSource* current_source = NULL;
+ DataView* _tmp6_ = NULL;
+ DataSource* _tmp7_ = NULL;
+ MediaSource* _tmp8_ = NULL;
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _view_it;
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 9420 "Commands.c"
+ }
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _view_it;
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ view = (DataView*) _tmp5_;
+#line 994 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = view;
+#line 994 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = data_view_get_source (_tmp6_);
+#line 994 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_source = G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_MEDIA_SOURCE, MediaSource);
+#line 996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = key_source;
+#line 996 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp8_ == NULL) {
+#line 9438 "Commands.c"
+ MediaSource* _tmp9_ = NULL;
+ MediaSource* _tmp10_ = NULL;
+#line 997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = current_source;
+#line 997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _g_object_ref0 (_tmp9_);
+#line 997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (key_source);
+#line 997 "/home/jens/Source/shotwell/src/Commands.vala"
+ key_source = _tmp10_;
+#line 998 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (current_source);
+#line 998 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (view);
+#line 998 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 9455 "Commands.c"
+ }
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (current_source);
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (view);
+#line 9461 "Commands.c"
+ }
+#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_view_it);
+#line 9465 "Commands.c"
+ }
+#line 1003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = key_source;
+#line 1003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp11_ != NULL, "key_source != null");
+#line 1005 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = key_source;
+#line 1005 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = event_create_empty_event (_tmp12_);
+#line 1005 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_event = _tmp13_;
+#line 1007 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = iter;
+#line 1007 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _ ("Creating New Event");
+#line 1007 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _ ("Removing Event");
+#line 1007 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = move_photos_command_real_move_photos_command_new (new_event, _tmp14_, _tmp15_, _tmp16_, RESOURCES_NEW_EVENT_LABEL, "");
+#line 1007 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand)->real_command);
+#line 1007 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand)->real_command = _tmp17_;
+#line 988 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (new_event);
+#line 988 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (key_source);
+#line 988 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 9495 "Commands.c"
+}
+
+
+NewEventCommand* new_event_command_new (GeeIterable* iter) {
+#line 988 "/home/jens/Source/shotwell/src/Commands.vala"
+ return new_event_command_construct (TYPE_NEW_EVENT_COMMAND, iter);
+#line 9502 "Commands.c"
+}
+
+
+static void new_event_command_class_init (NewEventCommandClass * klass) {
+#line 987 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_event_command_parent_class = g_type_class_peek_parent (klass);
+#line 9509 "Commands.c"
+}
+
+
+static void new_event_command_instance_init (NewEventCommand * self) {
+}
+
+
+GType new_event_command_get_type (void) {
+ static volatile gsize new_event_command_type_id__volatile = 0;
+ if (g_once_init_enter (&new_event_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (NewEventCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) new_event_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (NewEventCommand), 0, (GInstanceInitFunc) new_event_command_instance_init, NULL };
+ GType new_event_command_type_id;
+ new_event_command_type_id = g_type_register_static (TYPE_MOVE_PHOTOS_COMMAND, "NewEventCommand", &g_define_type_info, 0);
+ g_once_init_leave (&new_event_command_type_id__volatile, new_event_command_type_id);
+ }
+ return new_event_command_type_id__volatile;
+}
+
+
+SetEventCommand* set_event_command_construct (GType object_type, GeeIterable* iter, Event* new_event) {
+ SetEventCommand * self = NULL;
+ Event* _tmp0_ = NULL;
+ GeeIterable* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ MovePhotosCommandRealMovePhotosCommand* _tmp4_ = NULL;
+#line 1014 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 1014 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_EVENT (new_event), NULL);
+#line 1015 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (SetEventCommand*) move_photos_command_construct (object_type, RESOURCES_SET_PHOTO_EVENT_LABEL, RESOURCES_SET_PHOTO_EVENT_TOOLTIP);
+#line 1017 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = new_event;
+#line 1017 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = iter;
+#line 1017 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _ ("Moving Photos to New Event");
+#line 1017 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _ ("Setting Photos to Previous Event");
+#line 1017 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = move_photos_command_real_move_photos_command_new (_tmp0_, _tmp1_, _tmp2_, _tmp3_, RESOURCES_SET_PHOTO_EVENT_LABEL, "");
+#line 1017 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand)->real_command);
+#line 1017 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand)->real_command = _tmp4_;
+#line 1014 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 9558 "Commands.c"
+}
+
+
+SetEventCommand* set_event_command_new (GeeIterable* iter, Event* new_event) {
+#line 1014 "/home/jens/Source/shotwell/src/Commands.vala"
+ return set_event_command_construct (TYPE_SET_EVENT_COMMAND, iter, new_event);
+#line 9565 "Commands.c"
+}
+
+
+static void set_event_command_class_init (SetEventCommandClass * klass) {
+#line 1013 "/home/jens/Source/shotwell/src/Commands.vala"
+ set_event_command_parent_class = g_type_class_peek_parent (klass);
+#line 9572 "Commands.c"
+}
+
+
+static void set_event_command_instance_init (SetEventCommand * self) {
+}
+
+
+GType set_event_command_get_type (void) {
+ static volatile gsize set_event_command_type_id__volatile = 0;
+ if (g_once_init_enter (&set_event_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SetEventCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) set_event_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SetEventCommand), 0, (GInstanceInitFunc) set_event_command_instance_init, NULL };
+ GType set_event_command_type_id;
+ set_event_command_type_id = g_type_register_static (TYPE_MOVE_PHOTOS_COMMAND, "SetEventCommand", &g_define_type_info, 0);
+ g_once_init_leave (&set_event_command_type_id__volatile, set_event_command_type_id);
+ }
+ return set_event_command_type_id__volatile;
+}
+
+
+MergeEventsCommand* merge_events_command_construct (GType object_type, GeeIterable* iter) {
+ MergeEventsCommand * self = NULL;
+ Event* master_event = NULL;
+ gint named_evt_src_count = 0;
+ gint unnamed_evt_src_count = 0;
+ GeeArrayList* media_thumbs = NULL;
+ GeeArrayList* _tmp0_ = NULL;
+ Event* _tmp48_ = NULL;
+ GeeArrayList* _tmp49_ = NULL;
+ gint _tmp50_ = 0;
+ gint _tmp51_ = 0;
+ Event* _tmp52_ = NULL;
+ GeeArrayList* _tmp53_ = NULL;
+ const gchar* _tmp54_ = NULL;
+ const gchar* _tmp55_ = NULL;
+ MovePhotosCommandRealMovePhotosCommand* _tmp56_ = NULL;
+#line 1024 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 1025 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (MergeEventsCommand*) move_photos_command_construct (object_type, RESOURCES_MERGE_LABEL, "");
+#line 1031 "/home/jens/Source/shotwell/src/Commands.vala"
+ master_event = NULL;
+#line 1032 "/home/jens/Source/shotwell/src/Commands.vala"
+ named_evt_src_count = 0;
+#line 1033 "/home/jens/Source/shotwell/src/Commands.vala"
+ unnamed_evt_src_count = 0;
+#line 1034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_array_list_new (TYPE_THUMBNAIL_VIEW, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+#line 1034 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_thumbs = _tmp0_;
+#line 9622 "Commands.c"
+ {
+ GeeIterator* _view_it = NULL;
+ GeeIterable* _tmp1_ = NULL;
+ GeeIterator* _tmp2_ = NULL;
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = iter;
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = gee_iterable_iterator (_tmp1_);
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _view_it = _tmp2_;
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 9635 "Commands.c"
+ GeeIterator* _tmp3_ = NULL;
+ gboolean _tmp4_ = FALSE;
+ DataView* view = NULL;
+ GeeIterator* _tmp5_ = NULL;
+ gpointer _tmp6_ = NULL;
+ Event* event = NULL;
+ DataView* _tmp7_ = NULL;
+ DataSource* _tmp8_ = NULL;
+ Event* _tmp9_ = NULL;
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _view_it;
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_iterator_next (_tmp3_);
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp4_) {
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 9653 "Commands.c"
+ }
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _view_it;
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = gee_iterator_get (_tmp5_);
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ view = (DataView*) _tmp6_;
+#line 1037 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = view;
+#line 1037 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = data_view_get_source (_tmp7_);
+#line 1037 "/home/jens/Source/shotwell/src/Commands.vala"
+ event = G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_EVENT, Event);
+#line 1040 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = master_event;
+#line 1040 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp9_ == NULL) {
+#line 9671 "Commands.c"
+ Event* _tmp10_ = NULL;
+ Event* _tmp11_ = NULL;
+ Event* _tmp12_ = NULL;
+ gint _tmp13_ = 0;
+ Event* _tmp14_ = NULL;
+ gboolean _tmp15_ = FALSE;
+#line 1043 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = event;
+#line 1043 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _g_object_ref0 (_tmp10_);
+#line 1043 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (master_event);
+#line 1043 "/home/jens/Source/shotwell/src/Commands.vala"
+ master_event = _tmp11_;
+#line 1044 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = master_event;
+#line 1044 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = event_source_get_media_count (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, TYPE_EVENT_SOURCE, EventSource));
+#line 1044 "/home/jens/Source/shotwell/src/Commands.vala"
+ unnamed_evt_src_count = _tmp13_;
+#line 1045 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = event;
+#line 1045 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = event_has_name (_tmp14_);
+#line 1045 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp15_) {
+#line 9698 "Commands.c"
+ Event* _tmp16_ = NULL;
+ gint _tmp17_ = 0;
+#line 1046 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = master_event;
+#line 1046 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = event_source_get_media_count (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, TYPE_EVENT_SOURCE, EventSource));
+#line 1046 "/home/jens/Source/shotwell/src/Commands.vala"
+ named_evt_src_count = _tmp17_;
+#line 9707 "Commands.c"
+ }
+ } else {
+ Event* _tmp18_ = NULL;
+ gboolean _tmp19_ = FALSE;
+#line 1050 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = event;
+#line 1050 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = event_has_name (_tmp18_);
+#line 1050 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp19_) {
+#line 9718 "Commands.c"
+ Event* _tmp20_ = NULL;
+ gint _tmp21_ = 0;
+ gint _tmp22_ = 0;
+#line 1051 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = event;
+#line 1051 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = event_source_get_media_count (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, TYPE_EVENT_SOURCE, EventSource));
+#line 1051 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = named_evt_src_count;
+#line 1051 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp21_ > _tmp22_) {
+#line 9730 "Commands.c"
+ Event* _tmp23_ = NULL;
+ gint _tmp24_ = 0;
+ Event* _tmp25_ = NULL;
+ Event* _tmp26_ = NULL;
+#line 1052 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = event;
+#line 1052 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = event_source_get_media_count (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, TYPE_EVENT_SOURCE, EventSource));
+#line 1052 "/home/jens/Source/shotwell/src/Commands.vala"
+ named_evt_src_count = _tmp24_;
+#line 1053 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = event;
+#line 1053 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _g_object_ref0 (_tmp25_);
+#line 1053 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (master_event);
+#line 1053 "/home/jens/Source/shotwell/src/Commands.vala"
+ master_event = _tmp26_;
+#line 9749 "Commands.c"
+ }
+ } else {
+ gint _tmp27_ = 0;
+#line 1055 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = named_evt_src_count;
+#line 1055 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp27_ == 0) {
+#line 9757 "Commands.c"
+ Event* _tmp28_ = NULL;
+ gint _tmp29_ = 0;
+ gint _tmp30_ = 0;
+#line 1059 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = event;
+#line 1059 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = event_source_get_media_count (G_TYPE_CHECK_INSTANCE_CAST (_tmp28_, TYPE_EVENT_SOURCE, EventSource));
+#line 1059 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = unnamed_evt_src_count;
+#line 1059 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp29_ > _tmp30_) {
+#line 9769 "Commands.c"
+ Event* _tmp31_ = NULL;
+ gint _tmp32_ = 0;
+ Event* _tmp33_ = NULL;
+ Event* _tmp34_ = NULL;
+#line 1060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = event;
+#line 1060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = event_source_get_media_count (G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, TYPE_EVENT_SOURCE, EventSource));
+#line 1060 "/home/jens/Source/shotwell/src/Commands.vala"
+ unnamed_evt_src_count = _tmp32_;
+#line 1061 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = event;
+#line 1061 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = _g_object_ref0 (_tmp33_);
+#line 1061 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (master_event);
+#line 1061 "/home/jens/Source/shotwell/src/Commands.vala"
+ master_event = _tmp34_;
+#line 9788 "Commands.c"
+ }
+ }
+ }
+ }
+ {
+ GeeIterator* _media_source_it = NULL;
+ Event* _tmp35_ = NULL;
+ GeeCollection* _tmp36_ = NULL;
+ GeeCollection* _tmp37_ = NULL;
+ GeeIterator* _tmp38_ = NULL;
+ GeeIterator* _tmp39_ = NULL;
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = event;
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = event_source_get_media (G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, TYPE_EVENT_SOURCE, EventSource));
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = _tmp36_;
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = _tmp38_;
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp37_);
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _media_source_it = _tmp39_;
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 9816 "Commands.c"
+ GeeIterator* _tmp40_ = NULL;
+ gboolean _tmp41_ = FALSE;
+ MediaSource* media_source = NULL;
+ GeeIterator* _tmp42_ = NULL;
+ gpointer _tmp43_ = NULL;
+ GeeArrayList* _tmp44_ = NULL;
+ MediaSource* _tmp45_ = NULL;
+ ThumbnailView* _tmp46_ = NULL;
+ ThumbnailView* _tmp47_ = NULL;
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = _media_source_it;
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = gee_iterator_next (_tmp40_);
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp41_) {
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 9834 "Commands.c"
+ }
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = _media_source_it;
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = gee_iterator_get (_tmp42_);
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source = (MediaSource*) _tmp43_;
+#line 1069 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = media_thumbs;
+#line 1069 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = media_source;
+#line 1069 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp46_ = thumbnail_view_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp45_, TYPE_THUMBNAIL_SOURCE, ThumbnailSource));
+#line 1069 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp47_ = _tmp46_;
+#line 1069 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp47_);
+#line 1069 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp47_);
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (media_source);
+#line 9856 "Commands.c"
+ }
+#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_media_source_it);
+#line 9860 "Commands.c"
+ }
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (event);
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (view);
+#line 9866 "Commands.c"
+ }
+#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_view_it);
+#line 9870 "Commands.c"
+ }
+#line 1072 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp48_ = master_event;
+#line 1072 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp48_ != NULL, "master_event != null");
+#line 1073 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp49_ = media_thumbs;
+#line 1073 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp50_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp49_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1073 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp51_ = _tmp50_;
+#line 1073 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp51_ > 0, "media_thumbs.size > 0");
+#line 1075 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp52_ = master_event;
+#line 1075 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp53_ = media_thumbs;
+#line 1075 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp54_ = _ ("Merging");
+#line 1075 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp55_ = _ ("Unmerging");
+#line 1075 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp56_ = move_photos_command_real_move_photos_command_new (_tmp52_, G_TYPE_CHECK_INSTANCE_CAST (_tmp53_, GEE_TYPE_ITERABLE, GeeIterable), _tmp54_, _tmp55_, RESOURCES_MERGE_LABEL, "");
+#line 1075 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand)->real_command);
+#line 1075 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MOVE_PHOTOS_COMMAND, MovePhotosCommand)->real_command = _tmp56_;
+#line 1024 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (media_thumbs);
+#line 1024 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (master_event);
+#line 1024 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 9904 "Commands.c"
+}
+
+
+MergeEventsCommand* merge_events_command_new (GeeIterable* iter) {
+#line 1024 "/home/jens/Source/shotwell/src/Commands.vala"
+ return merge_events_command_construct (TYPE_MERGE_EVENTS_COMMAND, iter);
+#line 9911 "Commands.c"
+}
+
+
+static void merge_events_command_class_init (MergeEventsCommandClass * klass) {
+#line 1023 "/home/jens/Source/shotwell/src/Commands.vala"
+ merge_events_command_parent_class = g_type_class_peek_parent (klass);
+#line 9918 "Commands.c"
+}
+
+
+static void merge_events_command_instance_init (MergeEventsCommand * self) {
+}
+
+
+GType merge_events_command_get_type (void) {
+ static volatile gsize merge_events_command_type_id__volatile = 0;
+ if (g_once_init_enter (&merge_events_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (MergeEventsCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) merge_events_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MergeEventsCommand), 0, (GInstanceInitFunc) merge_events_command_instance_init, NULL };
+ GType merge_events_command_type_id;
+ merge_events_command_type_id = g_type_register_static (TYPE_MOVE_PHOTOS_COMMAND, "MergeEventsCommand", &g_define_type_info, 0);
+ g_once_init_leave (&merge_events_command_type_id__volatile, merge_events_command_type_id);
+ }
+ return merge_events_command_type_id__volatile;
+}
+
+
+static void _duplicate_multiple_photos_command_on_photo_destroyed_source_collection_item_destroyed (SourceCollection* _sender, DataSource* source, gpointer self) {
+#line 1092 "/home/jens/Source/shotwell/src/Commands.vala"
+ duplicate_multiple_photos_command_on_photo_destroyed ((DuplicateMultiplePhotosCommand*) self, source);
+#line 9941 "Commands.c"
+}
+
+
+DuplicateMultiplePhotosCommand* duplicate_multiple_photos_command_construct (GType object_type, GeeIterable* iter) {
+ DuplicateMultiplePhotosCommand * self = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ LibraryPhotoSourceCollection* _tmp3_ = NULL;
+#line 1084 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 1085 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = iter;
+#line 1085 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _ ("Duplicating photos");
+#line 1085 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _ ("Removing duplicated photos");
+#line 1085 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (DuplicateMultiplePhotosCommand*) multiple_data_source_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_, RESOURCES_DUPLICATE_PHOTO_LABEL, RESOURCES_DUPLICATE_PHOTO_TOOLTIP);
+#line 1088 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = library_photo_global;
+#line 1088 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_SOURCE_COLLECTION, SourceCollection), "item-destroyed", (GCallback) _duplicate_multiple_photos_command_on_photo_destroyed_source_collection_item_destroyed, self, 0);
+#line 1084 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 9967 "Commands.c"
+}
+
+
+DuplicateMultiplePhotosCommand* duplicate_multiple_photos_command_new (GeeIterable* iter) {
+#line 1084 "/home/jens/Source/shotwell/src/Commands.vala"
+ return duplicate_multiple_photos_command_construct (TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND, iter);
+#line 9974 "Commands.c"
+}
+
+
+static void duplicate_multiple_photos_command_on_photo_destroyed (DuplicateMultiplePhotosCommand* self, DataSource* source) {
+ GeeHashMap* _tmp0_ = NULL;
+ GeeCollection* _tmp1_ = NULL;
+ GeeCollection* _tmp2_ = NULL;
+ GeeCollection* _tmp3_ = NULL;
+ DataSource* _tmp4_ = NULL;
+ gboolean _tmp5_ = FALSE;
+ gboolean _tmp6_ = FALSE;
+#line 1095 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DUPLICATE_MULTIPLE_PHOTOS_COMMAND (self));
+#line 1095 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1097 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->dupes;
+#line 1097 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_map_get_values (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_MAP, GeeMap));
+#line 1097 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 1097 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1097 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = source;
+#line 1097 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_collection_contains (_tmp3_, G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_LIBRARY_PHOTO, LibraryPhoto));
+#line 1097 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 1097 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp3_);
+#line 1097 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp6_) {
+#line 10008 "Commands.c"
+ CommandManager* _tmp7_ = NULL;
+ CommandManager* _tmp8_ = NULL;
+#line 1098 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 1098 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tmp7_;
+#line 1098 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp8_);
+#line 1098 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp8_);
+#line 10019 "Commands.c"
+ }
+}
+
+
+static void duplicate_multiple_photos_command_real_execute (Command* base) {
+ DuplicateMultiplePhotosCommand * self;
+ GeeHashMap* _tmp0_ = NULL;
+ gint _tmp1_ = 0;
+#line 1101 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND, DuplicateMultiplePhotosCommand);
+#line 1102 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->dupes;
+#line 1102 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_clear (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap));
+#line 1103 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->failed = 0;
+#line 1105 "/home/jens/Source/shotwell/src/Commands.vala"
+ COMMAND_CLASS (duplicate_multiple_photos_command_parent_class)->execute (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand), TYPE_COMMAND, Command));
+#line 1107 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->failed;
+#line 1107 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_ > 0) {
+#line 10042 "Commands.c"
+ gchar* error_string = NULL;
+ gint _tmp2_ = 0;
+ const gchar* _tmp3_ = NULL;
+ gint _tmp4_ = 0;
+ gchar* _tmp5_ = NULL;
+ const gchar* _tmp6_ = NULL;
+#line 1108 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->failed;
+#line 1108 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = ngettext ("Unable to duplicate one photo due to a file error", "Unable to duplicate %d photos due to file errors", (gulong) _tmp2_);
+#line 1108 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->failed;
+#line 1108 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = g_strdup_printf (_tmp3_, _tmp4_);
+#line 1108 "/home/jens/Source/shotwell/src/Commands.vala"
+ error_string = _tmp5_;
+#line 1110 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = error_string;
+#line 1110 "/home/jens/Source/shotwell/src/Commands.vala"
+ app_window_error_message (_tmp6_, NULL);
+#line 1107 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (error_string);
+#line 10065 "Commands.c"
+ }
+}
+
+
+static void duplicate_multiple_photos_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ DuplicateMultiplePhotosCommand * self;
+ LibraryPhoto* photo = NULL;
+ DataSource* _tmp0_ = NULL;
+ LibraryPhoto* _tmp1_ = NULL;
+ GError * _inner_error_ = NULL;
+#line 1114 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND, DuplicateMultiplePhotosCommand);
+#line 1114 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1115 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1115 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_LIBRARY_PHOTO, LibraryPhoto));
+#line 1115 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo = _tmp1_;
+#line 10086 "Commands.c"
+ {
+ LibraryPhoto* dupe = NULL;
+ LibraryPhoto* _tmp2_ = NULL;
+ GeeHashMap* _tmp3_ = NULL;
+#line 1118 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = library_photo_duplicate (photo, &_inner_error_);
+#line 1118 "/home/jens/Source/shotwell/src/Commands.vala"
+ dupe = _tmp2_;
+#line 1118 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 10097 "Commands.c"
+ goto __catch446_g_error;
+ }
+#line 1119 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->dupes;
+#line 1119 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), photo, dupe);
+#line 1117 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (dupe);
+#line 10106 "Commands.c"
+ }
+ goto __finally446;
+ __catch446_g_error:
+ {
+ GError* err = NULL;
+ GFile* _tmp4_ = NULL;
+ GFile* _tmp5_ = NULL;
+ gchar* _tmp6_ = NULL;
+ gchar* _tmp7_ = NULL;
+ GError* _tmp8_ = NULL;
+ const gchar* _tmp9_ = NULL;
+ gint _tmp10_ = 0;
+#line 1117 "/home/jens/Source/shotwell/src/Commands.vala"
+ err = _inner_error_;
+#line 1117 "/home/jens/Source/shotwell/src/Commands.vala"
+ _inner_error_ = NULL;
+#line 1121 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = media_source_get_file (G_TYPE_CHECK_INSTANCE_CAST (photo, TYPE_MEDIA_SOURCE, MediaSource));
+#line 1121 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 1121 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = g_file_get_path (_tmp5_);
+#line 1121 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _tmp6_;
+#line 1121 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = err;
+#line 1121 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _tmp8_->message;
+#line 1121 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("Commands.vala:1121: Unable to duplicate file %s: %s", _tmp7_, _tmp9_);
+#line 1121 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp7_);
+#line 1121 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp5_);
+#line 1122 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = self->priv->failed;
+#line 1122 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->failed = _tmp10_ + 1;
+#line 1117 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_error_free0 (err);
+#line 10147 "Commands.c"
+ }
+ __finally446:
+#line 1117 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1117 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo);
+#line 1117 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 1117 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_clear_error (&_inner_error_);
+#line 1117 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 10160 "Commands.c"
+ }
+#line 1114 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo);
+#line 10164 "Commands.c"
+}
+
+
+static void duplicate_multiple_photos_command_real_undo (Command* base) {
+ DuplicateMultiplePhotosCommand * self;
+ LibraryPhotoSourceCollection* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+ GeeHashMap* _tmp2_ = NULL;
+ LibraryPhotoSourceCollection* _tmp3_ = NULL;
+#line 1126 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND, DuplicateMultiplePhotosCommand);
+#line 1128 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = library_photo_global;
+#line 1128 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("item-destroyed", TYPE_SOURCE_COLLECTION, &_tmp1_, NULL, FALSE);
+#line 1128 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_SOURCE_COLLECTION, SourceCollection), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _duplicate_multiple_photos_command_on_photo_destroyed_source_collection_item_destroyed, self);
+#line 1130 "/home/jens/Source/shotwell/src/Commands.vala"
+ COMMAND_CLASS (duplicate_multiple_photos_command_parent_class)->undo (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand), TYPE_COMMAND, Command));
+#line 1133 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->dupes;
+#line 1133 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_clear (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap));
+#line 1134 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->failed = 0;
+#line 1137 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = library_photo_global;
+#line 1137 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_SOURCE_COLLECTION, SourceCollection), "item-destroyed", (GCallback) _duplicate_multiple_photos_command_on_photo_destroyed_source_collection_item_destroyed, self, 0);
+#line 10194 "Commands.c"
+}
+
+
+static void duplicate_multiple_photos_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ DuplicateMultiplePhotosCommand * self;
+ LibraryPhoto* photo = NULL;
+ DataSource* _tmp0_ = NULL;
+ LibraryPhoto* _tmp1_ = NULL;
+ Marker* marker = NULL;
+ LibraryPhotoSourceCollection* _tmp2_ = NULL;
+ GeeHashMap* _tmp3_ = NULL;
+ gpointer _tmp4_ = NULL;
+ LibraryPhoto* _tmp5_ = NULL;
+ Marker* _tmp6_ = NULL;
+ Marker* _tmp7_ = NULL;
+ LibraryPhotoSourceCollection* _tmp8_ = NULL;
+#line 1140 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND, DuplicateMultiplePhotosCommand);
+#line 1140 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1141 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1141 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_LIBRARY_PHOTO, LibraryPhoto));
+#line 1141 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo = _tmp1_;
+#line 1143 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = library_photo_global;
+#line 1143 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->dupes;
+#line 1143 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), photo);
+#line 1143 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = (LibraryPhoto*) _tmp4_;
+#line 1143 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = data_collection_mark (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_DATA_OBJECT, DataObject));
+#line 1143 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _tmp6_;
+#line 1143 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp5_);
+#line 1143 "/home/jens/Source/shotwell/src/Commands.vala"
+ marker = _tmp7_;
+#line 1144 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = library_photo_global;
+#line 1144 "/home/jens/Source/shotwell/src/Commands.vala"
+ source_collection_destroy_marked (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_SOURCE_COLLECTION, SourceCollection), marker, TRUE, NULL, NULL, NULL);
+#line 1140 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (marker);
+#line 1140 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo);
+#line 10245 "Commands.c"
+}
+
+
+static void duplicate_multiple_photos_command_class_init (DuplicateMultiplePhotosCommandClass * klass) {
+#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
+ duplicate_multiple_photos_command_parent_class = g_type_class_peek_parent (klass);
+#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (DuplicateMultiplePhotosCommandPrivate));
+#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = duplicate_multiple_photos_command_real_execute;
+#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->execute_on_source = duplicate_multiple_photos_command_real_execute_on_source;
+#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = duplicate_multiple_photos_command_real_undo;
+#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->undo_on_source = duplicate_multiple_photos_command_real_undo_on_source;
+#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = duplicate_multiple_photos_command_finalize;
+#line 10264 "Commands.c"
+}
+
+
+static void duplicate_multiple_photos_command_instance_init (DuplicateMultiplePhotosCommand * self) {
+ GeeHashMap* _tmp0_ = NULL;
+#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = DUPLICATE_MULTIPLE_PHOTOS_COMMAND_GET_PRIVATE (self);
+#line 1081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_map_new (TYPE_LIBRARY_PHOTO, (GBoxedCopyFunc) g_object_ref, g_object_unref, TYPE_LIBRARY_PHOTO, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1081 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->dupes = _tmp0_;
+#line 1082 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->failed = 0;
+#line 10278 "Commands.c"
+}
+
+
+static void duplicate_multiple_photos_command_finalize (GObject* obj) {
+ DuplicateMultiplePhotosCommand * self;
+ LibraryPhotoSourceCollection* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_DUPLICATE_MULTIPLE_PHOTOS_COMMAND, DuplicateMultiplePhotosCommand);
+#line 1092 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = library_photo_global;
+#line 1092 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("item-destroyed", TYPE_SOURCE_COLLECTION, &_tmp1_, NULL, FALSE);
+#line 1092 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_SOURCE_COLLECTION, SourceCollection), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _duplicate_multiple_photos_command_on_photo_destroyed_source_collection_item_destroyed, self);
+#line 1081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->dupes);
+#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (duplicate_multiple_photos_command_parent_class)->finalize (obj);
+#line 10298 "Commands.c"
+}
+
+
+GType duplicate_multiple_photos_command_get_type (void) {
+ static volatile gsize duplicate_multiple_photos_command_type_id__volatile = 0;
+ if (g_once_init_enter (&duplicate_multiple_photos_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (DuplicateMultiplePhotosCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) duplicate_multiple_photos_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (DuplicateMultiplePhotosCommand), 0, (GInstanceInitFunc) duplicate_multiple_photos_command_instance_init, NULL };
+ GType duplicate_multiple_photos_command_type_id;
+ duplicate_multiple_photos_command_type_id = g_type_register_static (TYPE_MULTIPLE_DATA_SOURCE_COMMAND, "DuplicateMultiplePhotosCommand", &g_define_type_info, 0);
+ g_once_init_leave (&duplicate_multiple_photos_command_type_id__volatile, duplicate_multiple_photos_command_type_id);
+ }
+ return duplicate_multiple_photos_command_type_id__volatile;
+}
+
+
+SetRatingSingleCommand* set_rating_single_command_construct (GType object_type, DataSource* source, Rating rating) {
+ SetRatingSingleCommand * self = NULL;
+ DataSource* _tmp0_ = NULL;
+ Rating _tmp1_ = 0;
+ const gchar* _tmp2_ = NULL;
+ Rating _tmp3_ = 0;
+ DataSource* _tmp4_ = NULL;
+ Rating _tmp5_ = 0;
+#line 1154 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_DATA_SOURCE (source), NULL);
+#line 1155 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1155 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = rating;
+#line 1155 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = resources_rating_label (_tmp1_);
+#line 1155 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (SetRatingSingleCommand*) single_data_source_command_construct (object_type, _tmp0_, _tmp2_, "");
+#line 1156 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->set_direct = TRUE;
+#line 1157 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = rating;
+#line 1157 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_rating = _tmp3_;
+#line 1159 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = source;
+#line 1159 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = media_source_get_rating (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_LIBRARY_PHOTO, LibraryPhoto), TYPE_MEDIA_SOURCE, MediaSource));
+#line 1159 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->last_rating = _tmp5_;
+#line 1154 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 10346 "Commands.c"
+}
+
+
+SetRatingSingleCommand* set_rating_single_command_new (DataSource* source, Rating rating) {
+#line 1154 "/home/jens/Source/shotwell/src/Commands.vala"
+ return set_rating_single_command_construct (TYPE_SET_RATING_SINGLE_COMMAND, source, rating);
+#line 10353 "Commands.c"
+}
+
+
+SetRatingSingleCommand* set_rating_single_command_construct_inc_dec (GType object_type, DataSource* source, gboolean is_incrementing) {
+ SetRatingSingleCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ gboolean _tmp1_ = FALSE;
+ DataSource* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ DataSource* _tmp4_ = NULL;
+ Rating _tmp5_ = 0;
+#line 1162 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_DATA_SOURCE (source), NULL);
+#line 1163 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = is_incrementing;
+#line 1163 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_) {
+#line 1163 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = RESOURCES_INCREASE_RATING_LABEL;
+#line 10373 "Commands.c"
+ } else {
+#line 1164 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = RESOURCES_DECREASE_RATING_LABEL;
+#line 10377 "Commands.c"
+ }
+#line 1163 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = source;
+#line 1163 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (SetRatingSingleCommand*) single_data_source_command_construct (object_type, _tmp2_, _tmp0_, "");
+#line 1165 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->set_direct = FALSE;
+#line 1166 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = is_incrementing;
+#line 1166 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->incrementing = _tmp3_;
+#line 1168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = source;
+#line 1168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = media_source_get_rating (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 1168 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->last_rating = _tmp5_;
+#line 1162 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 10397 "Commands.c"
+}
+
+
+SetRatingSingleCommand* set_rating_single_command_new_inc_dec (DataSource* source, gboolean is_incrementing) {
+#line 1162 "/home/jens/Source/shotwell/src/Commands.vala"
+ return set_rating_single_command_construct_inc_dec (TYPE_SET_RATING_SINGLE_COMMAND, source, is_incrementing);
+#line 10404 "Commands.c"
+}
+
+
+static void set_rating_single_command_real_execute (Command* base) {
+ SetRatingSingleCommand * self;
+ gboolean _tmp0_ = FALSE;
+#line 1171 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_RATING_SINGLE_COMMAND, SetRatingSingleCommand);
+#line 1172 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->set_direct;
+#line 1172 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_) {
+#line 10417 "Commands.c"
+ DataSource* _tmp1_ = NULL;
+ Rating _tmp2_ = 0;
+#line 1173 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 1173 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->new_rating;
+#line 1173 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_rating (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_MEDIA_SOURCE, MediaSource), _tmp2_);
+#line 10426 "Commands.c"
+ } else {
+ gboolean _tmp3_ = FALSE;
+#line 1175 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->incrementing;
+#line 1175 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_) {
+#line 10433 "Commands.c"
+ DataSource* _tmp4_ = NULL;
+#line 1176 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 1176 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_increase_rating (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 10439 "Commands.c"
+ } else {
+ DataSource* _tmp5_ = NULL;
+#line 1178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 1178 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_decrease_rating (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 10446 "Commands.c"
+ }
+ }
+}
+
+
+static void set_rating_single_command_real_undo (Command* base) {
+ SetRatingSingleCommand * self;
+ DataSource* _tmp0_ = NULL;
+ Rating _tmp1_ = 0;
+#line 1182 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_RATING_SINGLE_COMMAND, SetRatingSingleCommand);
+#line 1183 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SINGLE_DATA_SOURCE_COMMAND, SingleDataSourceCommand)->source;
+#line 1183 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->last_rating;
+#line 1183 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_rating (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MEDIA_SOURCE, MediaSource), _tmp1_);
+#line 10464 "Commands.c"
+}
+
+
+static void set_rating_single_command_class_init (SetRatingSingleCommandClass * klass) {
+#line 1148 "/home/jens/Source/shotwell/src/Commands.vala"
+ set_rating_single_command_parent_class = g_type_class_peek_parent (klass);
+#line 1148 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (SetRatingSingleCommandPrivate));
+#line 1148 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = set_rating_single_command_real_execute;
+#line 1148 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = set_rating_single_command_real_undo;
+#line 1148 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = set_rating_single_command_finalize;
+#line 10479 "Commands.c"
+}
+
+
+static void set_rating_single_command_instance_init (SetRatingSingleCommand * self) {
+#line 1148 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = SET_RATING_SINGLE_COMMAND_GET_PRIVATE (self);
+#line 10486 "Commands.c"
+}
+
+
+static void set_rating_single_command_finalize (GObject* obj) {
+ SetRatingSingleCommand * self;
+#line 1148 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SET_RATING_SINGLE_COMMAND, SetRatingSingleCommand);
+#line 1148 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (set_rating_single_command_parent_class)->finalize (obj);
+#line 10496 "Commands.c"
+}
+
+
+GType set_rating_single_command_get_type (void) {
+ static volatile gsize set_rating_single_command_type_id__volatile = 0;
+ if (g_once_init_enter (&set_rating_single_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SetRatingSingleCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) set_rating_single_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SetRatingSingleCommand), 0, (GInstanceInitFunc) set_rating_single_command_instance_init, NULL };
+ GType set_rating_single_command_type_id;
+ set_rating_single_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "SetRatingSingleCommand", &g_define_type_info, 0);
+ g_once_init_leave (&set_rating_single_command_type_id__volatile, set_rating_single_command_type_id);
+ }
+ return set_rating_single_command_type_id__volatile;
+}
+
+
+SetRatingCommand* set_rating_command_construct (GType object_type, GeeIterable* iter, Rating rating) {
+ SetRatingCommand * self = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ Rating _tmp1_ = 0;
+ gchar* _tmp2_ = NULL;
+ gchar* _tmp3_ = NULL;
+ const gchar* _tmp4_ = NULL;
+ Rating _tmp5_ = 0;
+ const gchar* _tmp6_ = NULL;
+ Rating _tmp7_ = 0;
+ GeeIterable* _tmp8_ = NULL;
+#line 1194 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 1195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = iter;
+#line 1195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = rating;
+#line 1195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = resources_rating_progress (_tmp1_);
+#line 1195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _ ("Restoring previous rating");
+#line 1195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = rating;
+#line 1195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = resources_rating_label (_tmp5_);
+#line 1195 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (SetRatingCommand*) multiple_data_source_command_construct (object_type, _tmp0_, _tmp3_, _tmp4_, _tmp6_, "");
+#line 1195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp3_);
+#line 1197 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->set_direct = TRUE;
+#line 1198 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = rating;
+#line 1198 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_rating = _tmp7_;
+#line 1200 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = iter;
+#line 1200 "/home/jens/Source/shotwell/src/Commands.vala"
+ set_rating_command_save_source_states (self, _tmp8_);
+#line 1194 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 10555 "Commands.c"
+}
+
+
+SetRatingCommand* set_rating_command_new (GeeIterable* iter, Rating rating) {
+#line 1194 "/home/jens/Source/shotwell/src/Commands.vala"
+ return set_rating_command_construct (TYPE_SET_RATING_COMMAND, iter, rating);
+#line 10562 "Commands.c"
+}
+
+
+SetRatingCommand* set_rating_command_construct_inc_dec (GType object_type, GeeIterable* iter, gboolean is_incrementing) {
+ SetRatingCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ gboolean _tmp1_ = FALSE;
+ const gchar* _tmp4_ = NULL;
+ gboolean _tmp5_ = FALSE;
+ const gchar* _tmp8_ = NULL;
+ gboolean _tmp9_ = FALSE;
+ GeeIterable* _tmp10_ = NULL;
+ gboolean _tmp11_ = FALSE;
+ GeeIterable* _tmp12_ = NULL;
+#line 1203 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 1205 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = is_incrementing;
+#line 1205 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_) {
+#line 10583 "Commands.c"
+ const gchar* _tmp2_ = NULL;
+#line 1205 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _ ("Increasing ratings");
+#line 1205 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _tmp2_;
+#line 10589 "Commands.c"
+ } else {
+ const gchar* _tmp3_ = NULL;
+#line 1205 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _ ("Decreasing ratings");
+#line 1205 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _tmp3_;
+#line 10596 "Commands.c"
+ }
+#line 1206 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = is_incrementing;
+#line 1206 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp5_) {
+#line 10602 "Commands.c"
+ const gchar* _tmp6_ = NULL;
+#line 1206 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _ ("Decreasing ratings");
+#line 1206 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp6_;
+#line 10608 "Commands.c"
+ } else {
+ const gchar* _tmp7_ = NULL;
+#line 1206 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _ ("Increasing ratings");
+#line 1206 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp7_;
+#line 10615 "Commands.c"
+ }
+#line 1207 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = is_incrementing;
+#line 1207 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp9_) {
+#line 1207 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = RESOURCES_INCREASE_RATING_LABEL;
+#line 10623 "Commands.c"
+ } else {
+#line 1207 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = RESOURCES_DECREASE_RATING_LABEL;
+#line 10627 "Commands.c"
+ }
+#line 1204 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = iter;
+#line 1204 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (SetRatingCommand*) multiple_data_source_command_construct (object_type, _tmp10_, _tmp0_, _tmp4_, _tmp8_, "");
+#line 1209 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->set_direct = FALSE;
+#line 1210 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = is_incrementing;
+#line 1210 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->incrementing = _tmp11_;
+#line 1212 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = iter;
+#line 1212 "/home/jens/Source/shotwell/src/Commands.vala"
+ set_rating_command_save_source_states (self, _tmp12_);
+#line 1203 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 10645 "Commands.c"
+}
+
+
+SetRatingCommand* set_rating_command_new_inc_dec (GeeIterable* iter, gboolean is_incrementing) {
+#line 1203 "/home/jens/Source/shotwell/src/Commands.vala"
+ return set_rating_command_construct_inc_dec (TYPE_SET_RATING_COMMAND, iter, is_incrementing);
+#line 10652 "Commands.c"
+}
+
+
+static void set_rating_command_save_source_states (SetRatingCommand* self, GeeIterable* iter) {
+ GeeHashMap* _tmp0_ = NULL;
+#line 1215 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_SET_RATING_COMMAND (self));
+#line 1215 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_ITERABLE (iter));
+#line 1216 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_map_new (TYPE_DATA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, TYPE_RATING, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1216 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->last_rating_map);
+#line 1216 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->last_rating_map = _tmp0_;
+#line 10668 "Commands.c"
+ {
+ GeeIterator* _view_it = NULL;
+ GeeIterable* _tmp1_ = NULL;
+ GeeIterator* _tmp2_ = NULL;
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = iter;
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = gee_iterable_iterator (_tmp1_);
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _view_it = _tmp2_;
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 10681 "Commands.c"
+ GeeIterator* _tmp3_ = NULL;
+ gboolean _tmp4_ = FALSE;
+ DataView* view = NULL;
+ GeeIterator* _tmp5_ = NULL;
+ gpointer _tmp6_ = NULL;
+ DataSource* source = NULL;
+ DataView* _tmp7_ = NULL;
+ DataSource* _tmp8_ = NULL;
+ GeeHashMap* _tmp9_ = NULL;
+ DataSource* _tmp10_ = NULL;
+ DataSource* _tmp11_ = NULL;
+ Rating _tmp12_ = 0;
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _view_it;
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_iterator_next (_tmp3_);
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp4_) {
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 10702 "Commands.c"
+ }
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _view_it;
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = gee_iterator_get (_tmp5_);
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ view = (DataView*) _tmp6_;
+#line 1219 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = view;
+#line 1219 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = data_view_get_source (_tmp7_);
+#line 1219 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = _tmp8_;
+#line 1220 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->priv->last_rating_map;
+#line 1220 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = source;
+#line 1220 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = source;
+#line 1220 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = media_source_get_rating (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 1220 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp10_, (gpointer) ((gintptr) _tmp12_));
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (view);
+#line 10730 "Commands.c"
+ }
+#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_view_it);
+#line 10734 "Commands.c"
+ }
+}
+
+
+static void set_rating_command_real_execute (Command* base) {
+ SetRatingCommand * self;
+#line 1224 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_RATING_COMMAND, SetRatingCommand);
+#line 1225 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->action_count = 0;
+#line 1226 "/home/jens/Source/shotwell/src/Commands.vala"
+ COMMAND_CLASS (set_rating_command_parent_class)->execute (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand), TYPE_COMMAND, Command));
+#line 10747 "Commands.c"
+}
+
+
+static void set_rating_command_real_undo (Command* base) {
+ SetRatingCommand * self;
+#line 1229 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_RATING_COMMAND, SetRatingCommand);
+#line 1230 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->action_count = 0;
+#line 1231 "/home/jens/Source/shotwell/src/Commands.vala"
+ COMMAND_CLASS (set_rating_command_parent_class)->undo (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand), TYPE_COMMAND, Command));
+#line 10759 "Commands.c"
+}
+
+
+static void set_rating_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ SetRatingCommand * self;
+ gboolean _tmp0_ = FALSE;
+#line 1234 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_RATING_COMMAND, SetRatingCommand);
+#line 1234 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1235 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->set_direct;
+#line 1235 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_) {
+#line 10774 "Commands.c"
+ DataSource* _tmp1_ = NULL;
+ Rating _tmp2_ = 0;
+#line 1236 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = source;
+#line 1236 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->new_rating;
+#line 1236 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_rating (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_MEDIA_SOURCE, MediaSource), _tmp2_);
+#line 10783 "Commands.c"
+ } else {
+ gboolean _tmp3_ = FALSE;
+#line 1238 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->incrementing;
+#line 1238 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_) {
+#line 10790 "Commands.c"
+ DataSource* _tmp4_ = NULL;
+#line 1239 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = source;
+#line 1239 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_increase_rating (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 10796 "Commands.c"
+ } else {
+ DataSource* _tmp5_ = NULL;
+#line 1241 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = source;
+#line 1241 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_decrease_rating (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 10803 "Commands.c"
+ }
+ }
+}
+
+
+static void set_rating_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ SetRatingCommand * self;
+ DataSource* _tmp0_ = NULL;
+ GeeHashMap* _tmp1_ = NULL;
+ DataSource* _tmp2_ = NULL;
+ gpointer _tmp3_ = NULL;
+#line 1245 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_RATING_COMMAND, SetRatingCommand);
+#line 1245 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1246 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1246 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->last_rating_map;
+#line 1246 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = source;
+#line 1246 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp2_);
+#line 1246 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_rating (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MEDIA_SOURCE, MediaSource), (Rating) ((gintptr) _tmp3_));
+#line 10829 "Commands.c"
+}
+
+
+static void set_rating_command_class_init (SetRatingCommandClass * klass) {
+#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
+ set_rating_command_parent_class = g_type_class_peek_parent (klass);
+#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (SetRatingCommandPrivate));
+#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = set_rating_command_real_execute;
+#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = set_rating_command_real_undo;
+#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->execute_on_source = set_rating_command_real_execute_on_source;
+#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->undo_on_source = set_rating_command_real_undo_on_source;
+#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = set_rating_command_finalize;
+#line 10848 "Commands.c"
+}
+
+
+static void set_rating_command_instance_init (SetRatingCommand * self) {
+#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = SET_RATING_COMMAND_GET_PRIVATE (self);
+#line 1192 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->action_count = 0;
+#line 10857 "Commands.c"
+}
+
+
+static void set_rating_command_finalize (GObject* obj) {
+ SetRatingCommand * self;
+#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SET_RATING_COMMAND, SetRatingCommand);
+#line 1188 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->last_rating_map);
+#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (set_rating_command_parent_class)->finalize (obj);
+#line 10869 "Commands.c"
+}
+
+
+GType set_rating_command_get_type (void) {
+ static volatile gsize set_rating_command_type_id__volatile = 0;
+ if (g_once_init_enter (&set_rating_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SetRatingCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) set_rating_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SetRatingCommand), 0, (GInstanceInitFunc) set_rating_command_instance_init, NULL };
+ GType set_rating_command_type_id;
+ set_rating_command_type_id = g_type_register_static (TYPE_MULTIPLE_DATA_SOURCE_COMMAND, "SetRatingCommand", &g_define_type_info, 0);
+ g_once_init_leave (&set_rating_command_type_id__volatile, set_rating_command_type_id);
+ }
+ return set_rating_command_type_id__volatile;
+}
+
+
+SetRawDeveloperCommand* set_raw_developer_command_construct (GType object_type, GeeIterable* iter, RawDeveloper developer) {
+ SetRawDeveloperCommand * self = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ RawDeveloper _tmp4_ = 0;
+ GeeIterable* _tmp5_ = NULL;
+#line 1255 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 1256 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = iter;
+#line 1256 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _ ("Setting RAW developer");
+#line 1256 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _ ("Restoring previous RAW developer");
+#line 1256 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _ ("Set Developer");
+#line 1256 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (SetRawDeveloperCommand*) multiple_data_source_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_, _tmp3_, "");
+#line 1258 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = developer;
+#line 1258 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_developer = _tmp4_;
+#line 1259 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = iter;
+#line 1259 "/home/jens/Source/shotwell/src/Commands.vala"
+ set_raw_developer_command_save_source_states (self, _tmp5_);
+#line 1255 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 10915 "Commands.c"
+}
+
+
+SetRawDeveloperCommand* set_raw_developer_command_new (GeeIterable* iter, RawDeveloper developer) {
+#line 1255 "/home/jens/Source/shotwell/src/Commands.vala"
+ return set_raw_developer_command_construct (TYPE_SET_RAW_DEVELOPER_COMMAND, iter, developer);
+#line 10922 "Commands.c"
+}
+
+
+static void set_raw_developer_command_save_source_states (SetRawDeveloperCommand* self, GeeIterable* iter) {
+ GeeHashMap* _tmp0_ = NULL;
+ GeeHashMap* _tmp1_ = NULL;
+#line 1262 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_SET_RAW_DEVELOPER_COMMAND (self));
+#line 1262 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_ITERABLE (iter));
+#line 1263 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_map_new (TYPE_PHOTO, (GBoxedCopyFunc) g_object_ref, g_object_unref, TYPE_RAW_DEVELOPER, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1263 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->last_developer_map);
+#line 1263 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->last_developer_map = _tmp0_;
+#line 1264 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_hash_map_new (TYPE_PHOTO, (GBoxedCopyFunc) g_object_ref, g_object_unref, TYPE_PHOTO_TRANSFORMATION_STATE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1264 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->last_transformation_map);
+#line 1264 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->last_transformation_map = _tmp1_;
+#line 10945 "Commands.c"
+ {
+ GeeIterator* _view_it = NULL;
+ GeeIterable* _tmp2_ = NULL;
+ GeeIterator* _tmp3_ = NULL;
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = iter;
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterable_iterator (_tmp2_);
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ _view_it = _tmp3_;
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 10958 "Commands.c"
+ GeeIterator* _tmp4_ = NULL;
+ gboolean _tmp5_ = FALSE;
+ DataView* view = NULL;
+ GeeIterator* _tmp6_ = NULL;
+ gpointer _tmp7_ = NULL;
+ Photo* photo = NULL;
+ DataView* _tmp8_ = NULL;
+ DataSource* _tmp9_ = NULL;
+ Photo* _tmp10_ = NULL;
+ Photo* _tmp11_ = NULL;
+ gboolean _tmp12_ = FALSE;
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _view_it;
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_next (_tmp4_);
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp5_) {
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 10978 "Commands.c"
+ }
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _view_it;
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_iterator_get (_tmp6_);
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ view = (DataView*) _tmp7_;
+#line 1267 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = view;
+#line 1267 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = data_view_get_source (_tmp8_);
+#line 1267 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, TYPE_PHOTO) ? ((Photo*) _tmp9_) : NULL;
+#line 1267 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp10_ == NULL) {
+#line 1267 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp9_);
+#line 10996 "Commands.c"
+ }
+#line 1267 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo = _tmp10_;
+#line 1268 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = photo;
+#line 1268 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = set_raw_developer_command_is_raw_photo (self, _tmp11_);
+#line 1268 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp12_) {
+#line 11006 "Commands.c"
+ GeeHashMap* _tmp13_ = NULL;
+ Photo* _tmp14_ = NULL;
+ Photo* _tmp15_ = NULL;
+ RawDeveloper _tmp16_ = 0;
+ GeeHashMap* _tmp17_ = NULL;
+ Photo* _tmp18_ = NULL;
+ Photo* _tmp19_ = NULL;
+ PhotoTransformationState* _tmp20_ = NULL;
+ PhotoTransformationState* _tmp21_ = NULL;
+#line 1269 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = self->priv->last_developer_map;
+#line 1269 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = photo;
+#line 1269 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = photo;
+#line 1269 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = photo_get_raw_developer (_tmp15_);
+#line 1269 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp14_, (gpointer) ((gintptr) _tmp16_));
+#line 1270 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = self->priv->last_transformation_map;
+#line 1270 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = photo;
+#line 1270 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = photo;
+#line 1270 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = photo_save_transformation_state (_tmp19_);
+#line 1270 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = _tmp20_;
+#line 1270 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp18_, _tmp21_);
+#line 1270 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp21_);
+#line 11040 "Commands.c"
+ }
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo);
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (view);
+#line 11046 "Commands.c"
+ }
+#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_view_it);
+#line 11050 "Commands.c"
+ }
+}
+
+
+static void set_raw_developer_command_real_execute (Command* base) {
+ SetRawDeveloperCommand * self;
+#line 1275 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_RAW_DEVELOPER_COMMAND, SetRawDeveloperCommand);
+#line 1276 "/home/jens/Source/shotwell/src/Commands.vala"
+ COMMAND_CLASS (set_raw_developer_command_parent_class)->execute (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand), TYPE_COMMAND, Command));
+#line 11061 "Commands.c"
+}
+
+
+static void set_raw_developer_command_real_undo (Command* base) {
+ SetRawDeveloperCommand * self;
+#line 1279 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_RAW_DEVELOPER_COMMAND, SetRawDeveloperCommand);
+#line 1280 "/home/jens/Source/shotwell/src/Commands.vala"
+ COMMAND_CLASS (set_raw_developer_command_parent_class)->undo (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand), TYPE_COMMAND, Command));
+#line 11071 "Commands.c"
+}
+
+
+static void set_raw_developer_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ SetRawDeveloperCommand * self;
+ Photo* photo = NULL;
+ DataSource* _tmp0_ = NULL;
+ Photo* _tmp1_ = NULL;
+ Photo* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+#line 1283 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_RAW_DEVELOPER_COMMAND, SetRawDeveloperCommand);
+#line 1283 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1284 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1284 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, TYPE_PHOTO) ? ((Photo*) _tmp0_) : NULL);
+#line 1284 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo = _tmp1_;
+#line 1285 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = photo;
+#line 1285 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = set_raw_developer_command_is_raw_photo (self, _tmp2_);
+#line 1285 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_) {
+#line 11098 "Commands.c"
+ gboolean _tmp4_ = FALSE;
+ RawDeveloper _tmp5_ = 0;
+#line 1286 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->new_developer;
+#line 1286 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp5_ == RAW_DEVELOPER_CAMERA) {
+#line 11105 "Commands.c"
+ Photo* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+#line 1286 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = photo;
+#line 1286 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = photo_is_raw_developer_available (_tmp6_, RAW_DEVELOPER_CAMERA);
+#line 1286 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = !_tmp7_;
+#line 11114 "Commands.c"
+ } else {
+#line 1286 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = FALSE;
+#line 11118 "Commands.c"
+ }
+#line 1286 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_) {
+#line 11122 "Commands.c"
+ Photo* _tmp8_ = NULL;
+#line 1287 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = photo;
+#line 1287 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_set_raw_developer (_tmp8_, RAW_DEVELOPER_EMBEDDED);
+#line 11128 "Commands.c"
+ } else {
+ Photo* _tmp9_ = NULL;
+ RawDeveloper _tmp10_ = 0;
+#line 1289 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = photo;
+#line 1289 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = self->priv->new_developer;
+#line 1289 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_set_raw_developer (_tmp9_, _tmp10_);
+#line 11138 "Commands.c"
+ }
+ }
+#line 1283 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo);
+#line 11143 "Commands.c"
+}
+
+
+static void set_raw_developer_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ SetRawDeveloperCommand * self;
+ Photo* photo = NULL;
+ DataSource* _tmp0_ = NULL;
+ Photo* _tmp1_ = NULL;
+ Photo* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+#line 1293 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_RAW_DEVELOPER_COMMAND, SetRawDeveloperCommand);
+#line 1293 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1294 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1294 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, TYPE_PHOTO) ? ((Photo*) _tmp0_) : NULL);
+#line 1294 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo = _tmp1_;
+#line 1295 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = photo;
+#line 1295 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = set_raw_developer_command_is_raw_photo (self, _tmp2_);
+#line 1295 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_) {
+#line 11170 "Commands.c"
+ Photo* _tmp4_ = NULL;
+ GeeHashMap* _tmp5_ = NULL;
+ Photo* _tmp6_ = NULL;
+ gpointer _tmp7_ = NULL;
+ Photo* _tmp8_ = NULL;
+ GeeHashMap* _tmp9_ = NULL;
+ Photo* _tmp10_ = NULL;
+ gpointer _tmp11_ = NULL;
+ PhotoTransformationState* _tmp12_ = NULL;
+#line 1296 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = photo;
+#line 1296 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->last_developer_map;
+#line 1296 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = photo;
+#line 1296 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp6_);
+#line 1296 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_set_raw_developer (_tmp4_, (RawDeveloper) ((gintptr) _tmp7_));
+#line 1297 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = photo;
+#line 1297 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->priv->last_transformation_map;
+#line 1297 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = photo;
+#line 1297 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp10_);
+#line 1297 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = (PhotoTransformationState*) _tmp11_;
+#line 1297 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_load_transformation_state (_tmp8_, _tmp12_);
+#line 1297 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp12_);
+#line 11204 "Commands.c"
+ }
+#line 1293 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo);
+#line 11208 "Commands.c"
+}
+
+
+static gboolean set_raw_developer_command_is_raw_photo (SetRawDeveloperCommand* self, Photo* photo) {
+ gboolean result = FALSE;
+ gboolean _tmp0_ = FALSE;
+ Photo* _tmp1_ = NULL;
+#line 1301 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_SET_RAW_DEVELOPER_COMMAND (self), FALSE);
+#line 1301 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail ((photo == NULL) || IS_PHOTO (photo), FALSE);
+#line 1302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = photo;
+#line 1302 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_ != NULL) {
+#line 11224 "Commands.c"
+ Photo* _tmp2_ = NULL;
+ PhotoFileFormat _tmp3_ = 0;
+#line 1302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = photo;
+#line 1302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = photo_get_master_file_format (_tmp2_);
+#line 1302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _tmp3_ == PHOTO_FILE_FORMAT_RAW;
+#line 11233 "Commands.c"
+ } else {
+#line 1302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = FALSE;
+#line 11237 "Commands.c"
+ }
+#line 1302 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = _tmp0_;
+#line 1302 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 11243 "Commands.c"
+}
+
+
+static void set_raw_developer_command_class_init (SetRawDeveloperCommandClass * klass) {
+#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
+ set_raw_developer_command_parent_class = g_type_class_peek_parent (klass);
+#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (SetRawDeveloperCommandPrivate));
+#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = set_raw_developer_command_real_execute;
+#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = set_raw_developer_command_real_undo;
+#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->execute_on_source = set_raw_developer_command_real_execute_on_source;
+#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->undo_on_source = set_raw_developer_command_real_undo_on_source;
+#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = set_raw_developer_command_finalize;
+#line 11262 "Commands.c"
+}
+
+
+static void set_raw_developer_command_instance_init (SetRawDeveloperCommand * self) {
+#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = SET_RAW_DEVELOPER_COMMAND_GET_PRIVATE (self);
+#line 11269 "Commands.c"
+}
+
+
+static void set_raw_developer_command_finalize (GObject* obj) {
+ SetRawDeveloperCommand * self;
+#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SET_RAW_DEVELOPER_COMMAND, SetRawDeveloperCommand);
+#line 1251 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->last_developer_map);
+#line 1252 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->last_transformation_map);
+#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (set_raw_developer_command_parent_class)->finalize (obj);
+#line 11283 "Commands.c"
+}
+
+
+GType set_raw_developer_command_get_type (void) {
+ static volatile gsize set_raw_developer_command_type_id__volatile = 0;
+ if (g_once_init_enter (&set_raw_developer_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SetRawDeveloperCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) set_raw_developer_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SetRawDeveloperCommand), 0, (GInstanceInitFunc) set_raw_developer_command_instance_init, NULL };
+ GType set_raw_developer_command_type_id;
+ set_raw_developer_command_type_id = g_type_register_static (TYPE_MULTIPLE_DATA_SOURCE_COMMAND, "SetRawDeveloperCommand", &g_define_type_info, 0);
+ g_once_init_leave (&set_raw_developer_command_type_id__volatile, set_raw_developer_command_type_id);
+ }
+ return set_raw_developer_command_type_id__volatile;
+}
+
+
+AdjustDateTimePhotoCommand* adjust_date_time_photo_command_construct (GType object_type, Dateable* dateable, gint64 time_shift, gboolean modify_original) {
+ AdjustDateTimePhotoCommand * self = NULL;
+ Dateable* _tmp0_ = NULL;
+ Dateable* _tmp1_ = NULL;
+ Dateable* _tmp2_ = NULL;
+ gint64 _tmp3_ = 0LL;
+ gboolean _tmp4_ = FALSE;
+#line 1312 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_DATEABLE (dateable), NULL);
+#line 1313 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = dateable;
+#line 1313 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (AdjustDateTimePhotoCommand*) single_data_source_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_SOURCE, DataSource), RESOURCES_ADJUST_DATE_TIME_LABEL, "");
+#line 1315 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = dateable;
+#line 1315 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 1315 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->dateable);
+#line 1315 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->dateable = _tmp2_;
+#line 1316 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = time_shift;
+#line 1316 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->time_shift = _tmp3_;
+#line 1317 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = modify_original;
+#line 1317 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->modify_original = _tmp4_;
+#line 1312 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 11330 "Commands.c"
+}
+
+
+AdjustDateTimePhotoCommand* adjust_date_time_photo_command_new (Dateable* dateable, gint64 time_shift, gboolean modify_original) {
+#line 1312 "/home/jens/Source/shotwell/src/Commands.vala"
+ return adjust_date_time_photo_command_construct (TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND, dateable, time_shift, modify_original);
+#line 11337 "Commands.c"
+}
+
+
+static void adjust_date_time_photo_command_real_execute (Command* base) {
+ AdjustDateTimePhotoCommand * self;
+ Dateable* _tmp0_ = NULL;
+ Dateable* _tmp1_ = NULL;
+ time_t _tmp2_ = 0;
+ gint64 _tmp3_ = 0LL;
+ Dateable* _tmp4_ = NULL;
+ Event* _tmp5_ = NULL;
+ ViewCollection* all_events = NULL;
+ ViewCollection* _tmp6_ = NULL;
+ Dateable* _tmp23_ = NULL;
+ ViewCollection* _tmp24_ = NULL;
+#line 1320 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND, AdjustDateTimePhotoCommand);
+#line 1321 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->dateable;
+#line 1321 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->dateable;
+#line 1321 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = dateable_get_exposure_time (_tmp1_);
+#line 1321 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->time_shift;
+#line 1321 "/home/jens/Source/shotwell/src/Commands.vala"
+ adjust_date_time_photo_command_set_time (self, _tmp0_, _tmp2_ + ((time_t) _tmp3_));
+#line 1323 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->dateable;
+#line 1323 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = media_source_get_event (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 1323 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->prev_event);
+#line 1323 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->prev_event = _tmp5_;
+#line 1325 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = view_collection_new ("tmp");
+#line 1325 "/home/jens/Source/shotwell/src/Commands.vala"
+ all_events = _tmp6_;
+#line 11377 "Commands.c"
+ {
+ GeeIterator* _dobj_it = NULL;
+ EventSourceCollection* _tmp7_ = NULL;
+ GeeCollection* _tmp8_ = NULL;
+ GeeCollection* _tmp9_ = NULL;
+ GeeIterator* _tmp10_ = NULL;
+ GeeIterator* _tmp11_ = NULL;
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = event_global;
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = data_collection_get_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_DATA_COLLECTION, DataCollection));
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _tmp8_;
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _tmp10_;
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp9_);
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _dobj_it = _tmp11_;
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 11401 "Commands.c"
+ GeeIterator* _tmp12_ = NULL;
+ gboolean _tmp13_ = FALSE;
+ DataObject* dobj = NULL;
+ GeeIterator* _tmp14_ = NULL;
+ gpointer _tmp15_ = NULL;
+ Event* event = NULL;
+ DataObject* _tmp16_ = NULL;
+ Event* _tmp17_ = NULL;
+ Event* _tmp18_ = NULL;
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = _dobj_it;
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = gee_iterator_next (_tmp12_);
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp13_) {
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 11419 "Commands.c"
+ }
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _dobj_it;
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_iterator_get (_tmp14_);
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ dobj = (DataObject*) _tmp15_;
+#line 1328 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = dobj;
+#line 1328 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, TYPE_EVENT) ? ((Event*) _tmp16_) : NULL);
+#line 1328 "/home/jens/Source/shotwell/src/Commands.vala"
+ event = _tmp17_;
+#line 1329 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = event;
+#line 1329 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp18_ != NULL) {
+#line 11437 "Commands.c"
+ ViewCollection* _tmp19_ = NULL;
+ Event* _tmp20_ = NULL;
+ EventView* _tmp21_ = NULL;
+ EventView* _tmp22_ = NULL;
+#line 1330 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = all_events;
+#line 1330 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = event;
+#line 1330 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = event_view_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, TYPE_EVENT_SOURCE, EventSource));
+#line 1330 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = _tmp21_;
+#line 1330 "/home/jens/Source/shotwell/src/Commands.vala"
+ data_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, TYPE_DATA_OBJECT, DataObject));
+#line 1330 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp22_);
+#line 11454 "Commands.c"
+ }
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (event);
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (dobj);
+#line 11460 "Commands.c"
+ }
+#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_dobj_it);
+#line 11464 "Commands.c"
+ }
+#line 1333 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = self->priv->dateable;
+#line 1333 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = all_events;
+#line 1333 "/home/jens/Source/shotwell/src/Commands.vala"
+ event_generate_single_event (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, TYPE_MEDIA_SOURCE, MediaSource), _tmp24_, NULL);
+#line 1320 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (all_events);
+#line 11474 "Commands.c"
+}
+
+
+static void adjust_date_time_photo_command_real_undo (Command* base) {
+ AdjustDateTimePhotoCommand * self;
+ Dateable* _tmp0_ = NULL;
+ Dateable* _tmp1_ = NULL;
+ time_t _tmp2_ = 0;
+ gint64 _tmp3_ = 0LL;
+ Dateable* _tmp4_ = NULL;
+ Event* _tmp5_ = NULL;
+#line 1336 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND, AdjustDateTimePhotoCommand);
+#line 1337 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->dateable;
+#line 1337 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->dateable;
+#line 1337 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = dateable_get_exposure_time (_tmp1_);
+#line 1337 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->time_shift;
+#line 1337 "/home/jens/Source/shotwell/src/Commands.vala"
+ adjust_date_time_photo_command_set_time (self, _tmp0_, _tmp2_ - ((time_t) _tmp3_));
+#line 1339 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->dateable;
+#line 1339 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->prev_event;
+#line 1339 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_event (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MEDIA_SOURCE, MediaSource), _tmp5_);
+#line 11504 "Commands.c"
+}
+
+
+static void adjust_date_time_photo_command_set_time (AdjustDateTimePhotoCommand* self, Dateable* dateable, time_t exposure_time) {
+ gboolean _tmp0_ = FALSE;
+ gboolean _tmp1_ = FALSE;
+ GError * _inner_error_ = NULL;
+#line 1342 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_ADJUST_DATE_TIME_PHOTO_COMMAND (self));
+#line 1342 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATEABLE (dateable));
+#line 1343 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->modify_original;
+#line 1343 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_) {
+#line 11520 "Commands.c"
+ Dateable* _tmp2_ = NULL;
+#line 1343 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = dateable;
+#line 1343 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, TYPE_PHOTO);
+#line 11526 "Commands.c"
+ } else {
+#line 1343 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = FALSE;
+#line 11530 "Commands.c"
+ }
+#line 1343 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_) {
+#line 11534 "Commands.c"
+ {
+ Dateable* _tmp3_ = NULL;
+ time_t _tmp4_ = 0;
+#line 1345 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = dateable;
+#line 1345 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = exposure_time;
+#line 1345 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_set_exposure_time_persistent (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_PHOTO, Photo), _tmp4_, &_inner_error_);
+#line 1345 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 11546 "Commands.c"
+ goto __catch447_g_error;
+ }
+ }
+ goto __finally447;
+ __catch447_g_error:
+ {
+ GError* err = NULL;
+ const gchar* _tmp5_ = NULL;
+#line 1344 "/home/jens/Source/shotwell/src/Commands.vala"
+ err = _inner_error_;
+#line 1344 "/home/jens/Source/shotwell/src/Commands.vala"
+ _inner_error_ = NULL;
+#line 1347 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _ ("Original photo could not be adjusted.");
+#line 1347 "/home/jens/Source/shotwell/src/Commands.vala"
+ app_window_error_message (_tmp5_, NULL);
+#line 1344 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_error_free0 (err);
+#line 11565 "Commands.c"
+ }
+ __finally447:
+#line 1344 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1344 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 1344 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_clear_error (&_inner_error_);
+#line 1344 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 11576 "Commands.c"
+ }
+ } else {
+ Dateable* _tmp6_ = NULL;
+ time_t _tmp7_ = 0;
+#line 1350 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = dateable;
+#line 1350 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = exposure_time;
+#line 1350 "/home/jens/Source/shotwell/src/Commands.vala"
+ dateable_set_exposure_time (_tmp6_, _tmp7_);
+#line 11587 "Commands.c"
+ }
+}
+
+
+static void adjust_date_time_photo_command_class_init (AdjustDateTimePhotoCommandClass * klass) {
+#line 1306 "/home/jens/Source/shotwell/src/Commands.vala"
+ adjust_date_time_photo_command_parent_class = g_type_class_peek_parent (klass);
+#line 1306 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (AdjustDateTimePhotoCommandPrivate));
+#line 1306 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = adjust_date_time_photo_command_real_execute;
+#line 1306 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = adjust_date_time_photo_command_real_undo;
+#line 1306 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = adjust_date_time_photo_command_finalize;
+#line 11603 "Commands.c"
+}
+
+
+static void adjust_date_time_photo_command_instance_init (AdjustDateTimePhotoCommand * self) {
+#line 1306 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = ADJUST_DATE_TIME_PHOTO_COMMAND_GET_PRIVATE (self);
+#line 11610 "Commands.c"
+}
+
+
+static void adjust_date_time_photo_command_finalize (GObject* obj) {
+ AdjustDateTimePhotoCommand * self;
+#line 1306 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ADJUST_DATE_TIME_PHOTO_COMMAND, AdjustDateTimePhotoCommand);
+#line 1307 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->dateable);
+#line 1308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->prev_event);
+#line 1306 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (adjust_date_time_photo_command_parent_class)->finalize (obj);
+#line 11624 "Commands.c"
+}
+
+
+GType adjust_date_time_photo_command_get_type (void) {
+ static volatile gsize adjust_date_time_photo_command_type_id__volatile = 0;
+ if (g_once_init_enter (&adjust_date_time_photo_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (AdjustDateTimePhotoCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) adjust_date_time_photo_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AdjustDateTimePhotoCommand), 0, (GInstanceInitFunc) adjust_date_time_photo_command_instance_init, NULL };
+ GType adjust_date_time_photo_command_type_id;
+ adjust_date_time_photo_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "AdjustDateTimePhotoCommand", &g_define_type_info, 0);
+ g_once_init_leave (&adjust_date_time_photo_command_type_id__volatile, adjust_date_time_photo_command_type_id);
+ }
+ return adjust_date_time_photo_command_type_id__volatile;
+}
+
+
+static time_t* _time_t_dup (time_t* self) {
+ time_t* dup;
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ dup = g_new0 (time_t, 1);
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ memcpy (dup, self, sizeof (time_t));
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ return dup;
+#line 11648 "Commands.c"
+}
+
+
+static gpointer __time_t_dup0 (gpointer self) {
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self ? _time_t_dup (self) : NULL;
+#line 11655 "Commands.c"
+}
+
+
+AdjustDateTimePhotosCommand* adjust_date_time_photos_command_construct (GType object_type, GeeIterable* iter, gint64 time_shift, gboolean keep_relativity, gboolean modify_originals) {
+ AdjustDateTimePhotosCommand * self = NULL;
+ GeeIterable* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ gint64 _tmp3_ = 0LL;
+ gboolean _tmp4_ = FALSE;
+ gboolean _tmp5_ = FALSE;
+ GeeHashMap* _tmp6_ = NULL;
+ GeeHashMap* _tmp32_ = NULL;
+#line 1366 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_ITERABLE (iter), NULL);
+#line 1368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = iter;
+#line 1368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _ ("Adjusting Date and Time");
+#line 1368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _ ("Undoing Date and Time Adjustment");
+#line 1368 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (AdjustDateTimePhotosCommand*) multiple_data_source_command_construct (object_type, _tmp0_, _tmp1_, _tmp2_, RESOURCES_ADJUST_DATE_TIME_LABEL, "");
+#line 1371 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = time_shift;
+#line 1371 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->time_shift = _tmp3_;
+#line 1372 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = keep_relativity;
+#line 1372 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->keep_relativity = _tmp4_;
+#line 1373 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = modify_originals;
+#line 1373 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->modify_originals = _tmp5_;
+#line 1377 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = gee_hash_map_new (TYPE_DATEABLE, (GBoxedCopyFunc) g_object_ref, g_object_unref, TYPE_EVENT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1377 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->prev_events);
+#line 1377 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->prev_events = G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_MAP, GeeMap);
+#line 11697 "Commands.c"
+ {
+ GeeIterator* _view_it = NULL;
+ GeeIterable* _tmp7_ = NULL;
+ GeeIterator* _tmp8_ = NULL;
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = iter;
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = gee_iterable_iterator (_tmp7_);
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _view_it = _tmp8_;
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 11710 "Commands.c"
+ GeeIterator* _tmp9_ = NULL;
+ gboolean _tmp10_ = FALSE;
+ DataView* view = NULL;
+ GeeIterator* _tmp11_ = NULL;
+ gpointer _tmp12_ = NULL;
+ GeeMap* _tmp13_ = NULL;
+ DataView* _tmp14_ = NULL;
+ DataSource* _tmp15_ = NULL;
+ Dateable* _tmp16_ = NULL;
+ Dateable* _tmp17_ = NULL;
+ DataView* _tmp18_ = NULL;
+ DataSource* _tmp19_ = NULL;
+ MediaSource* _tmp20_ = NULL;
+ MediaSource* _tmp21_ = NULL;
+ Event* _tmp22_ = NULL;
+ Event* _tmp23_ = NULL;
+ time_t* _tmp24_ = NULL;
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _view_it;
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_iterator_next (_tmp9_);
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp10_) {
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 11736 "Commands.c"
+ }
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _view_it;
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = gee_iterator_get (_tmp11_);
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ view = (DataView*) _tmp12_;
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = self->priv->prev_events;
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = view;
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = data_view_get_source (_tmp14_);
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, TYPE_DATEABLE) ? ((Dateable*) _tmp15_) : NULL;
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp16_ == NULL) {
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp15_);
+#line 11756 "Commands.c"
+ }
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _tmp16_;
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = view;
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = data_view_get_source (_tmp18_);
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, TYPE_MEDIA_SOURCE) ? ((MediaSource*) _tmp19_) : NULL;
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp20_ == NULL) {
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp19_);
+#line 11770 "Commands.c"
+ }
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = _tmp20_;
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = media_source_get_event (_tmp21_);
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _tmp22_;
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_map_set (_tmp13_, _tmp17_, _tmp23_);
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp23_);
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp21_);
+#line 1381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp17_);
+#line 1383 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = self->priv->new_time;
+#line 1383 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp24_ == NULL) {
+#line 11790 "Commands.c"
+ DataView* _tmp25_ = NULL;
+ DataSource* _tmp26_ = NULL;
+ Dateable* _tmp27_ = NULL;
+ time_t _tmp28_ = 0;
+ gint64 _tmp29_ = 0LL;
+ time_t _tmp30_ = 0;
+ time_t* _tmp31_ = NULL;
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = view;
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = data_view_get_source (_tmp25_);
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, TYPE_DATEABLE, Dateable);
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = dateable_get_exposure_time (_tmp27_);
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = time_shift;
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = _tmp28_ + ((time_t) _tmp29_);
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = __time_t_dup0 (&_tmp30_);
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_time);
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_time = _tmp31_;
+#line 1384 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp27_);
+#line 1386 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (view);
+#line 1386 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 11822 "Commands.c"
+ }
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (view);
+#line 11826 "Commands.c"
+ }
+#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_view_it);
+#line 11830 "Commands.c"
+ }
+#line 1390 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = gee_hash_map_new (TYPE_DATEABLE, (GBoxedCopyFunc) g_object_ref, g_object_unref, G_TYPE_INVALID, (GBoxedCopyFunc) _time_t_dup, g_free, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1390 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->old_times);
+#line 1390 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->old_times = _tmp32_;
+#line 1366 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 11840 "Commands.c"
+}
+
+
+AdjustDateTimePhotosCommand* adjust_date_time_photos_command_new (GeeIterable* iter, gint64 time_shift, gboolean keep_relativity, gboolean modify_originals) {
+#line 1366 "/home/jens/Source/shotwell/src/Commands.vala"
+ return adjust_date_time_photos_command_construct (TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND, iter, time_shift, keep_relativity, modify_originals);
+#line 11847 "Commands.c"
+}
+
+
+static void adjust_date_time_photos_command_real_execute (Command* base) {
+ AdjustDateTimePhotosCommand * self;
+ GeeArrayList* _tmp0_ = NULL;
+ GeeArrayList* _tmp1_ = NULL;
+ gint _tmp2_ = 0;
+ gint _tmp3_ = 0;
+ ViewCollection* all_events = NULL;
+ ViewCollection* _tmp10_ = NULL;
+#line 1393 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND, AdjustDateTimePhotosCommand);
+#line 1394 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_array_list_new (TYPE_DATEABLE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+#line 1394 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->error_list);
+#line 1394 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->error_list = _tmp0_;
+#line 1395 "/home/jens/Source/shotwell/src/Commands.vala"
+ COMMAND_CLASS (adjust_date_time_photos_command_parent_class)->execute (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand), TYPE_COMMAND, Command));
+#line 1397 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->error_list;
+#line 1397 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1397 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1397 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_ > 0) {
+#line 11877 "Commands.c"
+ GeeArrayList* _tmp4_ = NULL;
+ GeeArrayList* _tmp5_ = NULL;
+ gint _tmp6_ = 0;
+ gint _tmp7_ = 0;
+ const gchar* _tmp8_ = NULL;
+ const gchar* _tmp9_ = NULL;
+#line 1398 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->error_list;
+#line 1398 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->error_list;
+#line 1398 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1398 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _tmp6_;
+#line 1398 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = ngettext ("One original photo could not be adjusted.", "The following original photos could not be adjusted.", (gulong) _tmp7_);
+#line 1398 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _ ("Time Adjustment Error");
+#line 1398 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_object_error_dialog (_tmp4_, _tmp8_, _tmp9_);
+#line 11898 "Commands.c"
+ }
+#line 1404 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = view_collection_new ("tmp");
+#line 1404 "/home/jens/Source/shotwell/src/Commands.vala"
+ all_events = _tmp10_;
+#line 11904 "Commands.c"
+ {
+ GeeIterator* _d_it = NULL;
+ GeeMap* _tmp11_ = NULL;
+ GeeSet* _tmp12_ = NULL;
+ GeeSet* _tmp13_ = NULL;
+ GeeSet* _tmp14_ = NULL;
+ GeeIterator* _tmp15_ = NULL;
+ GeeIterator* _tmp16_ = NULL;
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = self->priv->prev_events;
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = gee_map_get_keys (_tmp11_);
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _tmp12_;
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _tmp13_;
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _tmp15_;
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp14_);
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _d_it = _tmp16_;
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 11931 "Commands.c"
+ GeeIterator* _tmp17_ = NULL;
+ gboolean _tmp18_ = FALSE;
+ Dateable* d = NULL;
+ GeeIterator* _tmp19_ = NULL;
+ gpointer _tmp20_ = NULL;
+ Dateable* _tmp37_ = NULL;
+ ViewCollection* _tmp38_ = NULL;
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _d_it;
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = gee_iterator_next (_tmp17_);
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp18_) {
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 11947 "Commands.c"
+ }
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = _d_it;
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = gee_iterator_get (_tmp19_);
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ d = (Dateable*) _tmp20_;
+#line 11955 "Commands.c"
+ {
+ GeeIterator* _dobj_it = NULL;
+ EventSourceCollection* _tmp21_ = NULL;
+ GeeCollection* _tmp22_ = NULL;
+ GeeCollection* _tmp23_ = NULL;
+ GeeIterator* _tmp24_ = NULL;
+ GeeIterator* _tmp25_ = NULL;
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = event_global;
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = data_collection_get_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, TYPE_DATA_COLLECTION, DataCollection));
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _tmp22_;
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = _tmp24_;
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp23_);
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _dobj_it = _tmp25_;
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 11979 "Commands.c"
+ GeeIterator* _tmp26_ = NULL;
+ gboolean _tmp27_ = FALSE;
+ DataObject* dobj = NULL;
+ GeeIterator* _tmp28_ = NULL;
+ gpointer _tmp29_ = NULL;
+ Event* event = NULL;
+ DataObject* _tmp30_ = NULL;
+ Event* _tmp31_ = NULL;
+ Event* _tmp32_ = NULL;
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _dobj_it;
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = gee_iterator_next (_tmp26_);
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp27_) {
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 11997 "Commands.c"
+ }
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = _dobj_it;
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = gee_iterator_get (_tmp28_);
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ dobj = (DataObject*) _tmp29_;
+#line 1408 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = dobj;
+#line 1408 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp30_, TYPE_EVENT) ? ((Event*) _tmp30_) : NULL);
+#line 1408 "/home/jens/Source/shotwell/src/Commands.vala"
+ event = _tmp31_;
+#line 1409 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = event;
+#line 1409 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp32_ != NULL) {
+#line 12015 "Commands.c"
+ ViewCollection* _tmp33_ = NULL;
+ Event* _tmp34_ = NULL;
+ EventView* _tmp35_ = NULL;
+ EventView* _tmp36_ = NULL;
+#line 1410 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = all_events;
+#line 1410 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = event;
+#line 1410 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = event_view_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, TYPE_EVENT_SOURCE, EventSource));
+#line 1410 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = _tmp35_;
+#line 1410 "/home/jens/Source/shotwell/src/Commands.vala"
+ data_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp33_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, TYPE_DATA_OBJECT, DataObject));
+#line 1410 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp36_);
+#line 12032 "Commands.c"
+ }
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (event);
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (dobj);
+#line 12038 "Commands.c"
+ }
+#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_dobj_it);
+#line 12042 "Commands.c"
+ }
+#line 1413 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = d;
+#line 1413 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = all_events;
+#line 1413 "/home/jens/Source/shotwell/src/Commands.vala"
+ event_generate_single_event (G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, TYPE_MEDIA_SOURCE, MediaSource), _tmp38_, NULL);
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (d);
+#line 12052 "Commands.c"
+ }
+#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_d_it);
+#line 12056 "Commands.c"
+ }
+#line 1393 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (all_events);
+#line 12060 "Commands.c"
+}
+
+
+static void adjust_date_time_photos_command_real_undo (Command* base) {
+ AdjustDateTimePhotosCommand * self;
+ GeeArrayList* _tmp0_ = NULL;
+ GeeArrayList* _tmp1_ = NULL;
+ gint _tmp2_ = 0;
+ gint _tmp3_ = 0;
+#line 1417 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND, AdjustDateTimePhotosCommand);
+#line 1418 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_array_list_new (TYPE_DATEABLE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+#line 1418 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->error_list);
+#line 1418 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->error_list = _tmp0_;
+#line 1419 "/home/jens/Source/shotwell/src/Commands.vala"
+ COMMAND_CLASS (adjust_date_time_photos_command_parent_class)->undo (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MULTIPLE_DATA_SOURCE_COMMAND, MultipleDataSourceCommand), TYPE_COMMAND, Command));
+#line 1421 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->error_list;
+#line 1421 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1421 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1421 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_ > 0) {
+#line 12088 "Commands.c"
+ GeeArrayList* _tmp4_ = NULL;
+ GeeArrayList* _tmp5_ = NULL;
+ gint _tmp6_ = 0;
+ gint _tmp7_ = 0;
+ const gchar* _tmp8_ = NULL;
+ const gchar* _tmp9_ = NULL;
+#line 1422 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->error_list;
+#line 1422 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->error_list;
+#line 1422 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1422 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _tmp6_;
+#line 1422 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = ngettext ("Time adjustments could not be undone on the following photo file.", "Time adjustments could not be undone on the following photo files.", (gulong) _tmp7_);
+#line 1422 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _ ("Time Adjustment Error");
+#line 1422 "/home/jens/Source/shotwell/src/Commands.vala"
+ multiple_object_error_dialog (_tmp4_, _tmp8_, _tmp9_);
+#line 12109 "Commands.c"
+ }
+}
+
+
+static void adjust_date_time_photos_command_set_time (AdjustDateTimePhotosCommand* self, Dateable* dateable, time_t exposure_time) {
+ gboolean _tmp0_ = FALSE;
+ gboolean _tmp1_ = FALSE;
+ GError * _inner_error_ = NULL;
+#line 1429 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_ADJUST_DATE_TIME_PHOTOS_COMMAND (self));
+#line 1429 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATEABLE (dateable));
+#line 1433 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->modify_originals;
+#line 1433 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_) {
+#line 12126 "Commands.c"
+ Dateable* _tmp2_ = NULL;
+#line 1433 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = dateable;
+#line 1433 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, TYPE_PHOTO);
+#line 12132 "Commands.c"
+ } else {
+#line 1433 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = FALSE;
+#line 12136 "Commands.c"
+ }
+#line 1433 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_) {
+#line 12140 "Commands.c"
+ {
+ Dateable* _tmp3_ = NULL;
+ time_t _tmp4_ = 0;
+#line 1435 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = dateable;
+#line 1435 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = exposure_time;
+#line 1435 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo_set_exposure_time_persistent (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_PHOTO, Photo), _tmp4_, &_inner_error_);
+#line 1435 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 12152 "Commands.c"
+ goto __catch448_g_error;
+ }
+ }
+ goto __finally448;
+ __catch448_g_error:
+ {
+ GError* err = NULL;
+ GeeArrayList* _tmp5_ = NULL;
+ Dateable* _tmp6_ = NULL;
+#line 1434 "/home/jens/Source/shotwell/src/Commands.vala"
+ err = _inner_error_;
+#line 1434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _inner_error_ = NULL;
+#line 1437 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->error_list;
+#line 1437 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = dateable;
+#line 1437 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp6_);
+#line 1434 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_error_free0 (err);
+#line 12174 "Commands.c"
+ }
+ __finally448:
+#line 1434 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1434 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 1434 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_clear_error (&_inner_error_);
+#line 1434 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 12185 "Commands.c"
+ }
+ } else {
+ Dateable* _tmp7_ = NULL;
+ time_t _tmp8_ = 0;
+#line 1442 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = dateable;
+#line 1442 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = exposure_time;
+#line 1442 "/home/jens/Source/shotwell/src/Commands.vala"
+ dateable_set_exposure_time (_tmp7_, _tmp8_);
+#line 12196 "Commands.c"
+ }
+}
+
+
+static void adjust_date_time_photos_command_real_execute_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ AdjustDateTimePhotosCommand * self;
+ Dateable* dateable = NULL;
+ DataSource* _tmp0_ = NULL;
+ Dateable* _tmp1_ = NULL;
+ gboolean _tmp2_ = FALSE;
+ gboolean _tmp3_ = FALSE;
+ ViewCollection* all_events = NULL;
+ ViewCollection* _tmp16_ = NULL;
+ Dateable* _tmp33_ = NULL;
+ ViewCollection* _tmp34_ = NULL;
+#line 1446 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND, AdjustDateTimePhotosCommand);
+#line 1446 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1447 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1447 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATEABLE, Dateable));
+#line 1447 "/home/jens/Source/shotwell/src/Commands.vala"
+ dateable = _tmp1_;
+#line 1449 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->keep_relativity;
+#line 1449 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_) {
+#line 12226 "Commands.c"
+ Dateable* _tmp4_ = NULL;
+ time_t _tmp5_ = 0;
+#line 1449 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = dateable;
+#line 1449 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = dateable_get_exposure_time (_tmp4_);
+#line 1449 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp5_ != ((time_t) 0);
+#line 12235 "Commands.c"
+ } else {
+#line 1449 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = FALSE;
+#line 12239 "Commands.c"
+ }
+#line 1449 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_) {
+#line 12243 "Commands.c"
+ Dateable* _tmp6_ = NULL;
+ Dateable* _tmp7_ = NULL;
+ time_t _tmp8_ = 0;
+ gint64 _tmp9_ = 0LL;
+#line 1450 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = dateable;
+#line 1450 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = dateable;
+#line 1450 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = dateable_get_exposure_time (_tmp7_);
+#line 1450 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->priv->time_shift;
+#line 1450 "/home/jens/Source/shotwell/src/Commands.vala"
+ adjust_date_time_photos_command_set_time (self, _tmp6_, _tmp8_ + ((time_t) _tmp9_));
+#line 12258 "Commands.c"
+ } else {
+ GeeHashMap* _tmp10_ = NULL;
+ Dateable* _tmp11_ = NULL;
+ Dateable* _tmp12_ = NULL;
+ time_t _tmp13_ = 0;
+ Dateable* _tmp14_ = NULL;
+ time_t* _tmp15_ = NULL;
+#line 1452 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = self->priv->old_times;
+#line 1452 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = dateable;
+#line 1452 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = dateable;
+#line 1452 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = dateable_get_exposure_time (_tmp12_);
+#line 1452 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp11_, &_tmp13_);
+#line 1453 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = dateable;
+#line 1453 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = self->priv->new_time;
+#line 1453 "/home/jens/Source/shotwell/src/Commands.vala"
+ adjust_date_time_photos_command_set_time (self, _tmp14_, *_tmp15_);
+#line 12282 "Commands.c"
+ }
+#line 1456 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = view_collection_new ("tmp");
+#line 1456 "/home/jens/Source/shotwell/src/Commands.vala"
+ all_events = _tmp16_;
+#line 12288 "Commands.c"
+ {
+ GeeIterator* _dobj_it = NULL;
+ EventSourceCollection* _tmp17_ = NULL;
+ GeeCollection* _tmp18_ = NULL;
+ GeeCollection* _tmp19_ = NULL;
+ GeeIterator* _tmp20_ = NULL;
+ GeeIterator* _tmp21_ = NULL;
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = event_global;
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = data_collection_get_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, TYPE_DATA_COLLECTION, DataCollection));
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = _tmp18_;
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = _tmp20_;
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp19_);
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _dobj_it = _tmp21_;
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 12312 "Commands.c"
+ GeeIterator* _tmp22_ = NULL;
+ gboolean _tmp23_ = FALSE;
+ DataObject* dobj = NULL;
+ GeeIterator* _tmp24_ = NULL;
+ gpointer _tmp25_ = NULL;
+ Event* event = NULL;
+ DataObject* _tmp26_ = NULL;
+ Event* _tmp27_ = NULL;
+ Event* _tmp28_ = NULL;
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = _dobj_it;
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = gee_iterator_next (_tmp22_);
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp23_) {
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 12330 "Commands.c"
+ }
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _dobj_it;
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = gee_iterator_get (_tmp24_);
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ dobj = (DataObject*) _tmp25_;
+#line 1459 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = dobj;
+#line 1459 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, TYPE_EVENT) ? ((Event*) _tmp26_) : NULL);
+#line 1459 "/home/jens/Source/shotwell/src/Commands.vala"
+ event = _tmp27_;
+#line 1460 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = event;
+#line 1460 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp28_ != NULL) {
+#line 12348 "Commands.c"
+ ViewCollection* _tmp29_ = NULL;
+ Event* _tmp30_ = NULL;
+ EventView* _tmp31_ = NULL;
+ EventView* _tmp32_ = NULL;
+#line 1461 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = all_events;
+#line 1461 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = event;
+#line 1461 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = event_view_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, TYPE_EVENT_SOURCE, EventSource));
+#line 1461 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = _tmp31_;
+#line 1461 "/home/jens/Source/shotwell/src/Commands.vala"
+ data_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp32_, TYPE_DATA_OBJECT, DataObject));
+#line 1461 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp32_);
+#line 12365 "Commands.c"
+ }
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (event);
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (dobj);
+#line 12371 "Commands.c"
+ }
+#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_dobj_it);
+#line 12375 "Commands.c"
+ }
+#line 1464 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = dateable;
+#line 1464 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = all_events;
+#line 1464 "/home/jens/Source/shotwell/src/Commands.vala"
+ event_generate_single_event (G_TYPE_CHECK_INSTANCE_CAST (_tmp33_, TYPE_MEDIA_SOURCE, MediaSource), _tmp34_, NULL);
+#line 1446 "/home/jens/Source/shotwell/src/Commands.vala"
+ _data_collection_unref0 (all_events);
+#line 1446 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (dateable);
+#line 12387 "Commands.c"
+}
+
+
+static void adjust_date_time_photos_command_real_undo_on_source (MultipleDataSourceCommand* base, DataSource* source) {
+ AdjustDateTimePhotosCommand * self;
+ Dateable* photo = NULL;
+ DataSource* _tmp0_ = NULL;
+ Dateable* _tmp1_ = NULL;
+ GeeHashMap* _tmp2_ = NULL;
+ Dateable* _tmp3_ = NULL;
+ gboolean _tmp4_ = FALSE;
+ DataSource* _tmp16_ = NULL;
+ GeeMap* _tmp17_ = NULL;
+ DataSource* _tmp18_ = NULL;
+ gpointer _tmp19_ = NULL;
+ Event* _tmp20_ = NULL;
+#line 1467 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND, AdjustDateTimePhotosCommand);
+#line 1467 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1468 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1468 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATEABLE, Dateable));
+#line 1468 "/home/jens/Source/shotwell/src/Commands.vala"
+ photo = _tmp1_;
+#line 1470 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->old_times;
+#line 1470 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = photo;
+#line 1470 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_abstract_map_has_key (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp3_);
+#line 1470 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_) {
+#line 12422 "Commands.c"
+ Dateable* _tmp5_ = NULL;
+ GeeHashMap* _tmp6_ = NULL;
+ Dateable* _tmp7_ = NULL;
+ gpointer _tmp8_ = NULL;
+ time_t* _tmp9_ = NULL;
+ GeeHashMap* _tmp10_ = NULL;
+ Dateable* _tmp11_ = NULL;
+#line 1471 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = photo;
+#line 1471 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = self->priv->old_times;
+#line 1471 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = photo;
+#line 1471 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp7_);
+#line 1471 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = (time_t*) _tmp8_;
+#line 1471 "/home/jens/Source/shotwell/src/Commands.vala"
+ adjust_date_time_photos_command_set_time (self, _tmp5_, *_tmp9_);
+#line 1471 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp9_);
+#line 1472 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = self->priv->old_times;
+#line 1472 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = photo;
+#line 1472 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_unset (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp11_, NULL);
+#line 12450 "Commands.c"
+ } else {
+ Dateable* _tmp12_ = NULL;
+ Dateable* _tmp13_ = NULL;
+ time_t _tmp14_ = 0;
+ gint64 _tmp15_ = 0LL;
+#line 1474 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = photo;
+#line 1474 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = photo;
+#line 1474 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = dateable_get_exposure_time (_tmp13_);
+#line 1474 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = self->priv->time_shift;
+#line 1474 "/home/jens/Source/shotwell/src/Commands.vala"
+ adjust_date_time_photos_command_set_time (self, _tmp12_, _tmp14_ - ((time_t) _tmp15_));
+#line 12466 "Commands.c"
+ }
+#line 1477 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = source;
+#line 1477 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = self->priv->prev_events;
+#line 1477 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = source;
+#line 1477 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = gee_map_get (_tmp17_, G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, TYPE_DATEABLE) ? ((Dateable*) _tmp18_) : NULL);
+#line 1477 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = (Event*) _tmp19_;
+#line 1477 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_set_event (G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, TYPE_MEDIA_SOURCE) ? ((MediaSource*) _tmp16_) : NULL, _tmp20_);
+#line 1477 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp20_);
+#line 1467 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (photo);
+#line 12484 "Commands.c"
+}
+
+
+static void adjust_date_time_photos_command_class_init (AdjustDateTimePhotosCommandClass * klass) {
+#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
+ adjust_date_time_photos_command_parent_class = g_type_class_peek_parent (klass);
+#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (AdjustDateTimePhotosCommandPrivate));
+#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = adjust_date_time_photos_command_real_execute;
+#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = adjust_date_time_photos_command_real_undo;
+#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->execute_on_source = adjust_date_time_photos_command_real_execute_on_source;
+#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceCommandClass *) klass)->undo_on_source = adjust_date_time_photos_command_real_undo_on_source;
+#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = adjust_date_time_photos_command_finalize;
+#line 12503 "Commands.c"
+}
+
+
+static void adjust_date_time_photos_command_instance_init (AdjustDateTimePhotosCommand * self) {
+#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = ADJUST_DATE_TIME_PHOTOS_COMMAND_GET_PRIVATE (self);
+#line 1362 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_time = NULL;
+#line 12512 "Commands.c"
+}
+
+
+static void adjust_date_time_photos_command_finalize (GObject* obj) {
+ AdjustDateTimePhotosCommand * self;
+#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ADJUST_DATE_TIME_PHOTOS_COMMAND, AdjustDateTimePhotosCommand);
+#line 1359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->prev_events);
+#line 1362 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_time);
+#line 1363 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->old_times);
+#line 1364 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->error_list);
+#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (adjust_date_time_photos_command_parent_class)->finalize (obj);
+#line 12530 "Commands.c"
+}
+
+
+GType adjust_date_time_photos_command_get_type (void) {
+ static volatile gsize adjust_date_time_photos_command_type_id__volatile = 0;
+ if (g_once_init_enter (&adjust_date_time_photos_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (AdjustDateTimePhotosCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) adjust_date_time_photos_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AdjustDateTimePhotosCommand), 0, (GInstanceInitFunc) adjust_date_time_photos_command_instance_init, NULL };
+ GType adjust_date_time_photos_command_type_id;
+ adjust_date_time_photos_command_type_id = g_type_register_static (TYPE_MULTIPLE_DATA_SOURCE_COMMAND, "AdjustDateTimePhotosCommand", &g_define_type_info, 0);
+ g_once_init_leave (&adjust_date_time_photos_command_type_id__volatile, adjust_date_time_photos_command_type_id);
+ }
+ return adjust_date_time_photos_command_type_id__volatile;
+}
+
+
+static void _add_tags_command_on_proxy_broken_source_proxy_broken (SourceProxy* _sender, gpointer self) {
+#line 1521 "/home/jens/Source/shotwell/src/Commands.vala"
+ add_tags_command_on_proxy_broken ((AddTagsCommand*) self);
+#line 12549 "Commands.c"
+}
+
+
+static void _add_tags_command_on_source_destroyed_source_collection_item_destroyed (SourceCollection* _sender, DataSource* source, gpointer self) {
+#line 1523 "/home/jens/Source/shotwell/src/Commands.vala"
+ add_tags_command_on_source_destroyed ((AddTagsCommand*) self, source);
+#line 12556 "Commands.c"
+}
+
+
+AddTagsCommand* add_tags_command_construct (GType object_type, gchar** paths, int paths_length1, GeeCollection* sources) {
+ AddTagsCommand * self = NULL;
+ gchar** _tmp0_ = NULL;
+ gint _tmp0__length1 = 0;
+ gchar* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ gchar** _tmp3_ = NULL;
+ gint _tmp3__length1 = 0;
+ LibraryPhotoSourceCollection* _tmp43_ = NULL;
+ VideoSourceCollection* _tmp44_ = NULL;
+#line 1485 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_COLLECTION (sources), NULL);
+#line 1486 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = paths;
+#line 1486 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0__length1 = paths_length1;
+#line 1486 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = resources_add_tags_label (_tmp0_, _tmp0__length1);
+#line 1486 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 1486 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (AddTagsCommand*) page_command_construct (object_type, _tmp2_, "");
+#line 1486 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp2_);
+#line 1491 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = paths;
+#line 1491 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3__length1 = paths_length1;
+#line 12588 "Commands.c"
+ {
+ gchar** path_collection = NULL;
+ gint path_collection_length1 = 0;
+ gint _path_collection_size_ = 0;
+ gint path_it = 0;
+#line 1491 "/home/jens/Source/shotwell/src/Commands.vala"
+ path_collection = _tmp3_;
+#line 1491 "/home/jens/Source/shotwell/src/Commands.vala"
+ path_collection_length1 = _tmp3__length1;
+#line 1491 "/home/jens/Source/shotwell/src/Commands.vala"
+ for (path_it = 0; path_it < _tmp3__length1; path_it = path_it + 1) {
+#line 12600 "Commands.c"
+ gchar* _tmp4_ = NULL;
+ gchar* path = NULL;
+#line 1491 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = g_strdup (path_collection[path_it]);
+#line 1491 "/home/jens/Source/shotwell/src/Commands.vala"
+ path = _tmp4_;
+#line 12607 "Commands.c"
+ {
+ GeeList* paths_to_create = NULL;
+ const gchar* _tmp5_ = NULL;
+ GeeList* _tmp6_ = NULL;
+ GeeList* _tmp7_ = NULL;
+ const gchar* _tmp8_ = NULL;
+#line 1492 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = path;
+#line 1492 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = hierarchical_tag_utilities_enumerate_parent_paths (_tmp5_);
+#line 1492 "/home/jens/Source/shotwell/src/Commands.vala"
+ paths_to_create = _tmp6_;
+#line 1494 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = paths_to_create;
+#line 1494 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = path;
+#line 1494 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_COLLECTION, GeeCollection), _tmp8_);
+#line 12626 "Commands.c"
+ {
+ GeeList* _create_path_list = NULL;
+ GeeList* _tmp9_ = NULL;
+ GeeList* _tmp10_ = NULL;
+ gint _create_path_size = 0;
+ GeeList* _tmp11_ = NULL;
+ gint _tmp12_ = 0;
+ gint _tmp13_ = 0;
+ gint _create_path_index = 0;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = paths_to_create;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _g_object_ref0 (_tmp9_);
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _create_path_list = _tmp10_;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _create_path_list;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _tmp12_;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _create_path_size = _tmp13_;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _create_path_index = -1;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 12654 "Commands.c"
+ gint _tmp14_ = 0;
+ gint _tmp15_ = 0;
+ gint _tmp16_ = 0;
+ gchar* create_path = NULL;
+ GeeList* _tmp17_ = NULL;
+ gint _tmp18_ = 0;
+ gpointer _tmp19_ = NULL;
+ Tag* tag = NULL;
+ const gchar* _tmp20_ = NULL;
+ Tag* _tmp21_ = NULL;
+ SourceProxy* tag_proxy = NULL;
+ Tag* _tmp22_ = NULL;
+ SourceProxy* _tmp23_ = NULL;
+ GeeArrayList* add_sources = NULL;
+ GeeArrayList* _tmp24_ = NULL;
+ GeeArrayList* _tmp36_ = NULL;
+ gint _tmp37_ = 0;
+ gint _tmp38_ = 0;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _create_path_index;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _create_path_index = _tmp14_ + 1;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _create_path_index;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _create_path_size;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp15_ < _tmp16_)) {
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 12685 "Commands.c"
+ }
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _create_path_list;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = _create_path_index;
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = gee_list_get (_tmp17_, _tmp18_);
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ create_path = (gchar*) _tmp19_;
+#line 1497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = create_path;
+#line 1497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = tag_for_path (_tmp20_);
+#line 1497 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag = _tmp21_;
+#line 1498 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = tag;
+#line 1498 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, TYPE_PROXYABLE, Proxyable));
+#line 1498 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_proxy = _tmp23_;
+#line 1502 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = gee_array_list_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+#line 1502 "/home/jens/Source/shotwell/src/Commands.vala"
+ add_sources = _tmp24_;
+#line 12711 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp25_ = NULL;
+ GeeIterator* _tmp26_ = NULL;
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = sources;
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp26_;
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 12724 "Commands.c"
+ GeeIterator* _tmp27_ = NULL;
+ gboolean _tmp28_ = FALSE;
+ MediaSource* source = NULL;
+ GeeIterator* _tmp29_ = NULL;
+ gpointer _tmp30_ = NULL;
+ Tag* _tmp31_ = NULL;
+ MediaSource* _tmp32_ = NULL;
+ gboolean _tmp33_ = FALSE;
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = _source_it;
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = gee_iterator_next (_tmp27_);
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp28_) {
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 12741 "Commands.c"
+ }
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = _source_it;
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = gee_iterator_get (_tmp29_);
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (MediaSource*) _tmp30_;
+#line 1504 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = tag;
+#line 1504 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = source;
+#line 1504 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = tag_contains (_tmp31_, _tmp32_);
+#line 1504 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp33_) {
+#line 12757 "Commands.c"
+ GeeArrayList* _tmp34_ = NULL;
+ MediaSource* _tmp35_ = NULL;
+#line 1505 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = add_sources;
+#line 1505 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = source;
+#line 1505 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp35_);
+#line 12766 "Commands.c"
+ }
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 12770 "Commands.c"
+ }
+#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 12774 "Commands.c"
+ }
+#line 1508 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = add_sources;
+#line 1508 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1508 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = _tmp37_;
+#line 1508 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp38_ > 0) {
+#line 12784 "Commands.c"
+ SourceProxy* _tmp39_ = NULL;
+ GeeHashMap* _tmp40_ = NULL;
+ SourceProxy* _tmp41_ = NULL;
+ GeeArrayList* _tmp42_ = NULL;
+#line 1509 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = tag_proxy;
+#line 1509 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp39_, "broken", (GCallback) _add_tags_command_on_proxy_broken_source_proxy_broken, self, 0);
+#line 1510 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = self->priv->map;
+#line 1510 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = tag_proxy;
+#line 1510 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = add_sources;
+#line 1510 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_map_set (G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp41_, _tmp42_);
+#line 12801 "Commands.c"
+ }
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (add_sources);
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (tag_proxy);
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (tag);
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (create_path);
+#line 12811 "Commands.c"
+ }
+#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_create_path_list);
+#line 12815 "Commands.c"
+ }
+#line 1491 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (paths_to_create);
+#line 1491 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (path);
+#line 12821 "Commands.c"
+ }
+ }
+ }
+#line 1515 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = library_photo_global;
+#line 1515 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp43_, TYPE_SOURCE_COLLECTION, SourceCollection), "item-destroyed", (GCallback) _add_tags_command_on_source_destroyed_source_collection_item_destroyed, self, 0);
+#line 1516 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = video_global;
+#line 1516 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, TYPE_SOURCE_COLLECTION, SourceCollection), "item-destroyed", (GCallback) _add_tags_command_on_source_destroyed_source_collection_item_destroyed, self, 0);
+#line 1485 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 12835 "Commands.c"
+}
+
+
+AddTagsCommand* add_tags_command_new (gchar** paths, int paths_length1, GeeCollection* sources) {
+#line 1485 "/home/jens/Source/shotwell/src/Commands.vala"
+ return add_tags_command_construct (TYPE_ADD_TAGS_COMMAND, paths, paths_length1, sources);
+#line 12842 "Commands.c"
+}
+
+
+static void add_tags_command_real_execute (Command* base) {
+ AddTagsCommand * self;
+#line 1527 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADD_TAGS_COMMAND, AddTagsCommand);
+#line 12850 "Commands.c"
+ {
+ GeeIterator* _tag_proxy_it = NULL;
+ GeeHashMap* _tmp0_ = NULL;
+ GeeSet* _tmp1_ = NULL;
+ GeeSet* _tmp2_ = NULL;
+ GeeSet* _tmp3_ = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ GeeIterator* _tmp5_ = NULL;
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->map;
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_map_get_keys (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_MAP, GeeMap));
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp3_);
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tag_proxy_it = _tmp5_;
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 12877 "Commands.c"
+ GeeIterator* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+ SourceProxy* tag_proxy = NULL;
+ GeeIterator* _tmp8_ = NULL;
+ gpointer _tmp9_ = NULL;
+ SourceProxy* _tmp10_ = NULL;
+ DataSource* _tmp11_ = NULL;
+ Tag* _tmp12_ = NULL;
+ GeeHashMap* _tmp13_ = NULL;
+ SourceProxy* _tmp14_ = NULL;
+ gpointer _tmp15_ = NULL;
+ GeeArrayList* _tmp16_ = NULL;
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tag_proxy_it;
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_iterator_next (_tmp6_);
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp7_) {
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 12898 "Commands.c"
+ }
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tag_proxy_it;
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_iterator_get (_tmp8_);
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_proxy = (SourceProxy*) _tmp9_;
+#line 1529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = tag_proxy;
+#line 1529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = source_proxy_get_source (_tmp10_);
+#line 1529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_TAG, Tag);
+#line 1529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = self->priv->map;
+#line 1529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = tag_proxy;
+#line 1529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp14_);
+#line 1529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = (GeeArrayList*) _tmp15_;
+#line 1529 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach_many (_tmp12_, G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp16_);
+#line 1529 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp12_);
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (tag_proxy);
+#line 12928 "Commands.c"
+ }
+#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tag_proxy_it);
+#line 12932 "Commands.c"
+ }
+}
+
+
+static void add_tags_command_real_undo (Command* base) {
+ AddTagsCommand * self;
+#line 1532 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ADD_TAGS_COMMAND, AddTagsCommand);
+#line 12941 "Commands.c"
+ {
+ GeeIterator* _tag_proxy_it = NULL;
+ GeeHashMap* _tmp0_ = NULL;
+ GeeSet* _tmp1_ = NULL;
+ GeeSet* _tmp2_ = NULL;
+ GeeSet* _tmp3_ = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ GeeIterator* _tmp5_ = NULL;
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->map;
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_map_get_keys (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_MAP, GeeMap));
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp3_);
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tag_proxy_it = _tmp5_;
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 12968 "Commands.c"
+ GeeIterator* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+ SourceProxy* tag_proxy = NULL;
+ GeeIterator* _tmp8_ = NULL;
+ gpointer _tmp9_ = NULL;
+ Tag* tag = NULL;
+ SourceProxy* _tmp10_ = NULL;
+ DataSource* _tmp11_ = NULL;
+ Tag* _tmp12_ = NULL;
+ GeeHashMap* _tmp13_ = NULL;
+ SourceProxy* _tmp14_ = NULL;
+ gpointer _tmp15_ = NULL;
+ GeeArrayList* _tmp16_ = NULL;
+ GeeMultiMap* _tmp17_ = NULL;
+ GeeMultiMap* _tmp18_ = NULL;
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tag_proxy_it;
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_iterator_next (_tmp6_);
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp7_) {
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 12992 "Commands.c"
+ }
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tag_proxy_it;
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_iterator_get (_tmp8_);
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_proxy = (SourceProxy*) _tmp9_;
+#line 1534 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = tag_proxy;
+#line 1534 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = source_proxy_get_source (_tmp10_);
+#line 1534 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag = G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_TAG, Tag);
+#line 1536 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = tag;
+#line 1536 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = self->priv->map;
+#line 1536 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = tag_proxy;
+#line 1536 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_abstract_map_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ABSTRACT_MAP, GeeAbstractMap), _tmp14_);
+#line 1536 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = (GeeArrayList*) _tmp15_;
+#line 1536 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = tag_detach_many (_tmp12_, G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1536 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = _tmp17_;
+#line 1536 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp18_);
+#line 1536 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp16_);
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (tag);
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (tag_proxy);
+#line 13028 "Commands.c"
+ }
+#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tag_proxy_it);
+#line 13032 "Commands.c"
+ }
+}
+
+
+static void add_tags_command_on_source_destroyed (AddTagsCommand* self, DataSource* source) {
+#line 1540 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_ADD_TAGS_COMMAND (self));
+#line 1540 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 13042 "Commands.c"
+ {
+ GeeIterator* _sources_it = NULL;
+ GeeHashMap* _tmp0_ = NULL;
+ GeeCollection* _tmp1_ = NULL;
+ GeeCollection* _tmp2_ = NULL;
+ GeeCollection* _tmp3_ = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ GeeIterator* _tmp5_ = NULL;
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->map;
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_map_get_values (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_MAP, GeeMap));
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp3_);
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _sources_it = _tmp5_;
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 13069 "Commands.c"
+ GeeIterator* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+ GeeArrayList* sources = NULL;
+ GeeIterator* _tmp8_ = NULL;
+ gpointer _tmp9_ = NULL;
+ GeeArrayList* _tmp10_ = NULL;
+ DataSource* _tmp11_ = NULL;
+ gboolean _tmp12_ = FALSE;
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _sources_it;
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_iterator_next (_tmp6_);
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp7_) {
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 13086 "Commands.c"
+ }
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _sources_it;
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_iterator_get (_tmp8_);
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ sources = (GeeArrayList*) _tmp9_;
+#line 1542 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = sources;
+#line 1542 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = source;
+#line 1542 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = gee_abstract_collection_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 1542 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp12_) {
+#line 13102 "Commands.c"
+ CommandManager* _tmp13_ = NULL;
+ CommandManager* _tmp14_ = NULL;
+#line 1543 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 1543 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _tmp13_;
+#line 1543 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp14_);
+#line 1543 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp14_);
+#line 1545 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (sources);
+#line 1545 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_sources_it);
+#line 1545 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 13119 "Commands.c"
+ }
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (sources);
+#line 13123 "Commands.c"
+ }
+#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_sources_it);
+#line 13127 "Commands.c"
+ }
+}
+
+
+static void add_tags_command_on_proxy_broken (AddTagsCommand* self) {
+ CommandManager* _tmp0_ = NULL;
+ CommandManager* _tmp1_ = NULL;
+#line 1550 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_ADD_TAGS_COMMAND (self));
+#line 1551 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 1551 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 1551 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp1_);
+#line 1551 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp1_);
+#line 13145 "Commands.c"
+}
+
+
+static void add_tags_command_class_init (AddTagsCommandClass * klass) {
+#line 1481 "/home/jens/Source/shotwell/src/Commands.vala"
+ add_tags_command_parent_class = g_type_class_peek_parent (klass);
+#line 1481 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (AddTagsCommandPrivate));
+#line 1481 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = add_tags_command_real_execute;
+#line 1481 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = add_tags_command_real_undo;
+#line 1481 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = add_tags_command_finalize;
+#line 13160 "Commands.c"
+}
+
+
+static void add_tags_command_instance_init (AddTagsCommand * self) {
+ GeeHashMap* _tmp0_ = NULL;
+#line 1481 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = ADD_TAGS_COMMAND_GET_PRIVATE (self);
+#line 1482 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_map_new (TYPE_SOURCE_PROXY, (GBoxedCopyFunc) source_proxy_ref, source_proxy_unref, GEE_TYPE_ARRAY_LIST, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1482 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->map = _tmp0_;
+#line 13172 "Commands.c"
+}
+
+
+static void add_tags_command_finalize (GObject* obj) {
+ AddTagsCommand * self;
+ LibraryPhotoSourceCollection* _tmp12_ = NULL;
+ guint _tmp13_ = 0U;
+ VideoSourceCollection* _tmp14_ = NULL;
+ guint _tmp15_ = 0U;
+#line 1481 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ADD_TAGS_COMMAND, AddTagsCommand);
+#line 13184 "Commands.c"
+ {
+ GeeIterator* _tag_proxy_it = NULL;
+ GeeHashMap* _tmp0_ = NULL;
+ GeeSet* _tmp1_ = NULL;
+ GeeSet* _tmp2_ = NULL;
+ GeeSet* _tmp3_ = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ GeeIterator* _tmp5_ = NULL;
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->map;
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_abstract_map_get_keys (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_MAP, GeeMap));
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp3_);
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tag_proxy_it = _tmp5_;
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 13211 "Commands.c"
+ GeeIterator* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+ SourceProxy* tag_proxy = NULL;
+ GeeIterator* _tmp8_ = NULL;
+ gpointer _tmp9_ = NULL;
+ SourceProxy* _tmp10_ = NULL;
+ guint _tmp11_ = 0U;
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tag_proxy_it;
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_iterator_next (_tmp6_);
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp7_) {
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 13227 "Commands.c"
+ }
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tag_proxy_it;
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_iterator_get (_tmp8_);
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_proxy = (SourceProxy*) _tmp9_;
+#line 1521 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = tag_proxy;
+#line 1521 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_SOURCE_PROXY, &_tmp11_, NULL, FALSE);
+#line 1521 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp10_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp11_, 0, NULL, (GCallback) _add_tags_command_on_proxy_broken_source_proxy_broken, self);
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (tag_proxy);
+#line 13243 "Commands.c"
+ }
+#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tag_proxy_it);
+#line 13247 "Commands.c"
+ }
+#line 1523 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = library_photo_global;
+#line 1523 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("item-destroyed", TYPE_SOURCE_COLLECTION, &_tmp13_, NULL, FALSE);
+#line 1523 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, TYPE_SOURCE_COLLECTION, SourceCollection), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp13_, 0, NULL, (GCallback) _add_tags_command_on_source_destroyed_source_collection_item_destroyed, self);
+#line 1524 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = video_global;
+#line 1524 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("item-destroyed", TYPE_SOURCE_COLLECTION, &_tmp15_, NULL, FALSE);
+#line 1524 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, TYPE_SOURCE_COLLECTION, SourceCollection), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp15_, 0, NULL, (GCallback) _add_tags_command_on_source_destroyed_source_collection_item_destroyed, self);
+#line 1482 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->map);
+#line 1481 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (add_tags_command_parent_class)->finalize (obj);
+#line 13265 "Commands.c"
+}
+
+
+GType add_tags_command_get_type (void) {
+ static volatile gsize add_tags_command_type_id__volatile = 0;
+ if (g_once_init_enter (&add_tags_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (AddTagsCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) add_tags_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AddTagsCommand), 0, (GInstanceInitFunc) add_tags_command_instance_init, NULL };
+ GType add_tags_command_type_id;
+ add_tags_command_type_id = g_type_register_static (TYPE_PAGE_COMMAND, "AddTagsCommand", &g_define_type_info, 0);
+ g_once_init_leave (&add_tags_command_type_id__volatile, add_tags_command_type_id);
+ }
+ return add_tags_command_type_id__volatile;
+}
+
+
+RenameTagCommand* rename_tag_command_construct (GType object_type, Tag* tag, const gchar* new_name) {
+ RenameTagCommand * self = NULL;
+ Tag* _tmp0_ = NULL;
+ Tag* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ gchar* _tmp3_ = NULL;
+ const gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+ gchar* _tmp6_ = NULL;
+ Tag* _tmp7_ = NULL;
+ gchar* _tmp8_ = NULL;
+ gchar* _tmp9_ = NULL;
+ Tag* _tmp10_ = NULL;
+ gchar* _tmp11_ = NULL;
+ const gchar* _tmp12_ = NULL;
+ gchar* _tmp13_ = NULL;
+#line 1560 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_TAG (tag), NULL);
+#line 1560 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (new_name != NULL, NULL);
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = tag;
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = tag;
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag_get_user_visible_name (_tmp1_);
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = new_name;
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = resources_rename_tag_label (_tmp3_, _tmp4_);
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = tag;
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = data_object_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_DATA_OBJECT, DataObject));
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _tmp8_;
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (RenameTagCommand*) simple_proxyable_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PROXYABLE, Proxyable), _tmp6_, _tmp9_);
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp9_);
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp6_);
+#line 1561 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp3_);
+#line 1564 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = tag;
+#line 1564 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = tag_get_user_visible_name (_tmp10_);
+#line 1564 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_name);
+#line 1564 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->old_name = _tmp11_;
+#line 1565 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = new_name;
+#line 1565 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = g_strdup (_tmp12_);
+#line 1565 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_name);
+#line 1565 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_name = _tmp13_;
+#line 1560 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 13347 "Commands.c"
+}
+
+
+RenameTagCommand* rename_tag_command_new (Tag* tag, const gchar* new_name) {
+#line 1560 "/home/jens/Source/shotwell/src/Commands.vala"
+ return rename_tag_command_construct (TYPE_RENAME_TAG_COMMAND, tag, new_name);
+#line 13354 "Commands.c"
+}
+
+
+static void rename_tag_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ RenameTagCommand * self;
+ DataSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gboolean _tmp2_ = FALSE;
+#line 1568 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_RENAME_TAG_COMMAND, RenameTagCommand);
+#line 1568 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1569 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1569 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->new_name;
+#line 1569 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag_rename (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_TAG, Tag), _tmp1_);
+#line 1569 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp2_) {
+#line 13375 "Commands.c"
+ const gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+#line 1570 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->new_name;
+#line 1570 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = resources_rename_tag_exists_message (_tmp3_);
+#line 1570 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 1570 "/home/jens/Source/shotwell/src/Commands.vala"
+ app_window_error_message (_tmp5_, NULL);
+#line 1570 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp5_);
+#line 13389 "Commands.c"
+ }
+}
+
+
+static void rename_tag_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ RenameTagCommand * self;
+ DataSource* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gboolean _tmp2_ = FALSE;
+#line 1573 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_RENAME_TAG_COMMAND, RenameTagCommand);
+#line 1573 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1574 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1574 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->old_name;
+#line 1574 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag_rename (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_TAG, Tag), _tmp1_);
+#line 1574 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp2_) {
+#line 13411 "Commands.c"
+ const gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+#line 1575 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->old_name;
+#line 1575 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = resources_rename_tag_exists_message (_tmp3_);
+#line 1575 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 1575 "/home/jens/Source/shotwell/src/Commands.vala"
+ app_window_error_message (_tmp5_, NULL);
+#line 1575 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp5_);
+#line 13425 "Commands.c"
+ }
+}
+
+
+static void rename_tag_command_class_init (RenameTagCommandClass * klass) {
+#line 1555 "/home/jens/Source/shotwell/src/Commands.vala"
+ rename_tag_command_parent_class = g_type_class_peek_parent (klass);
+#line 1555 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (RenameTagCommandPrivate));
+#line 1555 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->execute_on_source = rename_tag_command_real_execute_on_source;
+#line 1555 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->undo_on_source = rename_tag_command_real_undo_on_source;
+#line 1555 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = rename_tag_command_finalize;
+#line 13441 "Commands.c"
+}
+
+
+static void rename_tag_command_instance_init (RenameTagCommand * self) {
+#line 1555 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = RENAME_TAG_COMMAND_GET_PRIVATE (self);
+#line 13448 "Commands.c"
+}
+
+
+static void rename_tag_command_finalize (GObject* obj) {
+ RenameTagCommand * self;
+#line 1555 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_RENAME_TAG_COMMAND, RenameTagCommand);
+#line 1556 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_name);
+#line 1557 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_name);
+#line 1555 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (rename_tag_command_parent_class)->finalize (obj);
+#line 13462 "Commands.c"
+}
+
+
+GType rename_tag_command_get_type (void) {
+ static volatile gsize rename_tag_command_type_id__volatile = 0;
+ if (g_once_init_enter (&rename_tag_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (RenameTagCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) rename_tag_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RenameTagCommand), 0, (GInstanceInitFunc) rename_tag_command_instance_init, NULL };
+ GType rename_tag_command_type_id;
+ rename_tag_command_type_id = g_type_register_static (TYPE_SIMPLE_PROXYABLE_COMMAND, "RenameTagCommand", &g_define_type_info, 0);
+ g_once_init_leave (&rename_tag_command_type_id__volatile, rename_tag_command_type_id);
+ }
+ return rename_tag_command_type_id__volatile;
+}
+
+
+DeleteTagCommand* delete_tag_command_construct (GType object_type, Tag* tag) {
+ DeleteTagCommand * self = NULL;
+ Tag* _tmp0_ = NULL;
+ Tag* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+ Tag* _tmp6_ = NULL;
+ gchar* _tmp7_ = NULL;
+ gchar* _tmp8_ = NULL;
+#line 1582 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_TAG (tag), NULL);
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = tag;
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = tag;
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag_get_user_visible_name (_tmp1_);
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = resources_delete_tag_label (_tmp3_);
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = tag;
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = data_object_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_DATA_OBJECT, DataObject));
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tmp7_;
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (DeleteTagCommand*) simple_proxyable_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PROXYABLE, Proxyable), _tmp5_, _tmp8_);
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp8_);
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp5_);
+#line 1583 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp3_);
+#line 1582 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 13519 "Commands.c"
+}
+
+
+DeleteTagCommand* delete_tag_command_new (Tag* tag) {
+#line 1582 "/home/jens/Source/shotwell/src/Commands.vala"
+ return delete_tag_command_construct (TYPE_DELETE_TAG_COMMAND, tag);
+#line 13526 "Commands.c"
+}
+
+
+static void _delete_tag_command_on_proxy_broken_source_proxy_broken (SourceProxy* _sender, gpointer self) {
+#line 1597 "/home/jens/Source/shotwell/src/Commands.vala"
+ delete_tag_command_on_proxy_broken ((DeleteTagCommand*) self);
+#line 13533 "Commands.c"
+}
+
+
+static void delete_tag_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ DeleteTagCommand * self;
+ Tag* tag = NULL;
+ DataSource* _tmp0_ = NULL;
+ Tag* _tmp1_ = NULL;
+ GeeList* recursive_victims = NULL;
+ Tag* _tmp2_ = NULL;
+ GeeList* _tmp3_ = NULL;
+ GeeList* _tmp4_ = NULL;
+ gint _tmp5_ = 0;
+ gint _tmp6_ = 0;
+ TagSourceCollection* _tmp29_ = NULL;
+ TagSourceCollection* _tmp30_ = NULL;
+ DataSource* _tmp31_ = NULL;
+ Marker* _tmp32_ = NULL;
+ Marker* _tmp33_ = NULL;
+#line 1586 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_DELETE_TAG_COMMAND, DeleteTagCommand);
+#line 1586 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1587 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1587 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_TAG, Tag));
+#line 1587 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag = _tmp1_;
+#line 1590 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag;
+#line 1590 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = tag_get_hierarchical_children (_tmp2_);
+#line 1590 "/home/jens/Source/shotwell/src/Commands.vala"
+ recursive_victims = _tmp3_;
+#line 1591 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = recursive_victims;
+#line 1591 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1591 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 1591 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp6_ > 0) {
+#line 13577 "Commands.c"
+ GeeArrayList* _tmp7_ = NULL;
+#line 1594 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_array_list_new (TYPE_SOURCE_PROXY, (GBoxedCopyFunc) source_proxy_ref, source_proxy_unref, NULL, NULL, NULL);
+#line 1594 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->recursive_victim_proxies);
+#line 1594 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->recursive_victim_proxies = G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_LIST, GeeList);
+#line 13585 "Commands.c"
+ {
+ GeeList* _victim_list = NULL;
+ GeeList* _tmp8_ = NULL;
+ GeeList* _tmp9_ = NULL;
+ gint _victim_size = 0;
+ GeeList* _tmp10_ = NULL;
+ gint _tmp11_ = 0;
+ gint _tmp12_ = 0;
+ gint _victim_index = 0;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = recursive_victims;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _g_object_ref0 (_tmp8_);
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _victim_list = _tmp9_;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _victim_list;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = _tmp11_;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _victim_size = _tmp12_;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _victim_index = -1;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 13613 "Commands.c"
+ gint _tmp13_ = 0;
+ gint _tmp14_ = 0;
+ gint _tmp15_ = 0;
+ Tag* victim = NULL;
+ GeeList* _tmp16_ = NULL;
+ gint _tmp17_ = 0;
+ gpointer _tmp18_ = NULL;
+ SourceProxy* proxy = NULL;
+ Tag* _tmp19_ = NULL;
+ SourceProxy* _tmp20_ = NULL;
+ SourceProxy* _tmp21_ = NULL;
+ GeeList* _tmp22_ = NULL;
+ SourceProxy* _tmp23_ = NULL;
+ TagSourceCollection* _tmp24_ = NULL;
+ TagSourceCollection* _tmp25_ = NULL;
+ Tag* _tmp26_ = NULL;
+ Marker* _tmp27_ = NULL;
+ Marker* _tmp28_ = NULL;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _victim_index;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _victim_index = _tmp13_ + 1;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _victim_index;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _victim_size;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp14_ < _tmp15_)) {
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 13644 "Commands.c"
+ }
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _victim_list;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _victim_index;
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = gee_list_get (_tmp16_, _tmp17_);
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ victim = (Tag*) _tmp18_;
+#line 1596 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = victim;
+#line 1596 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, TYPE_PROXYABLE, Proxyable));
+#line 1596 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = _tmp20_;
+#line 1597 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = proxy;
+#line 1597 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp21_, "broken", (GCallback) _delete_tag_command_on_proxy_broken_source_proxy_broken, self, 0);
+#line 1598 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = self->priv->recursive_victim_proxies;
+#line 1598 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = proxy;
+#line 1598 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, GEE_TYPE_COLLECTION, GeeCollection), _tmp23_);
+#line 1600 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = tag_global;
+#line 1600 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = tag_global;
+#line 1600 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = victim;
+#line 1600 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = data_collection_mark (G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, TYPE_DATA_OBJECT, DataObject));
+#line 1600 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = _tmp27_;
+#line 1600 "/home/jens/Source/shotwell/src/Commands.vala"
+ source_collection_destroy_marked (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, TYPE_SOURCE_COLLECTION, SourceCollection), _tmp28_, FALSE, NULL, NULL, NULL);
+#line 1600 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp28_);
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (victim);
+#line 13688 "Commands.c"
+ }
+#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_victim_list);
+#line 13692 "Commands.c"
+ }
+ }
+#line 1605 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = tag_global;
+#line 1605 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = tag_global;
+#line 1605 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = source;
+#line 1605 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = data_collection_mark (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, TYPE_DATA_OBJECT, DataObject));
+#line 1605 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = _tmp32_;
+#line 1605 "/home/jens/Source/shotwell/src/Commands.vala"
+ source_collection_destroy_marked (G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, TYPE_SOURCE_COLLECTION, SourceCollection), _tmp33_, FALSE, NULL, NULL, NULL);
+#line 1605 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp33_);
+#line 1586 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (recursive_victims);
+#line 1586 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (tag);
+#line 13713 "Commands.c"
+}
+
+
+static void delete_tag_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ DeleteTagCommand * self;
+ DataSource* _tmp0_ = NULL;
+ GeeList* _tmp1_ = NULL;
+#line 1608 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_DELETE_TAG_COMMAND, DeleteTagCommand);
+#line 1608 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1611 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1611 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, TYPE_TAG), "source is Tag");
+#line 1614 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->recursive_victim_proxies;
+#line 1614 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_ != NULL) {
+#line 13733 "Commands.c"
+ {
+ gint i = 0;
+ GeeList* _tmp2_ = NULL;
+ gint _tmp3_ = 0;
+ gint _tmp4_ = 0;
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->recursive_victim_proxies;
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp4_ - 1;
+#line 13747 "Commands.c"
+ {
+ gboolean _tmp5_ = FALSE;
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = TRUE;
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 13754 "Commands.c"
+ gint _tmp7_ = 0;
+ SourceProxy* proxy = NULL;
+ GeeList* _tmp8_ = NULL;
+ gint _tmp9_ = 0;
+ gpointer _tmp10_ = NULL;
+ DataSource* victim_source = NULL;
+ SourceProxy* _tmp11_ = NULL;
+ DataSource* _tmp12_ = NULL;
+ DataSource* _tmp13_ = NULL;
+ SourceProxy* _tmp14_ = NULL;
+ guint _tmp15_ = 0U;
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp5_) {
+#line 13768 "Commands.c"
+ gint _tmp6_ = 0;
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = i;
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp6_ - 1;
+#line 13774 "Commands.c"
+ }
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = FALSE;
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = i;
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp7_ >= 0)) {
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 13784 "Commands.c"
+ }
+#line 1616 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = self->priv->recursive_victim_proxies;
+#line 1616 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = i;
+#line 1616 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_list_get (_tmp8_, _tmp9_);
+#line 1616 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = (SourceProxy*) _tmp10_;
+#line 1618 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = proxy;
+#line 1618 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = source_proxy_get_source (_tmp11_);
+#line 1618 "/home/jens/Source/shotwell/src/Commands.vala"
+ victim_source = _tmp12_;
+#line 1619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = victim_source;
+#line 1619 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, TYPE_TAG), "victim_source is Tag");
+#line 1621 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = proxy;
+#line 1621 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_SOURCE_PROXY, &_tmp15_, NULL, FALSE);
+#line 1621 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp14_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp15_, 0, NULL, (GCallback) _delete_tag_command_on_proxy_broken_source_proxy_broken, self);
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (victim_source);
+#line 1615 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 13814 "Commands.c"
+ }
+ }
+ }
+#line 1624 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->recursive_victim_proxies);
+#line 1624 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->recursive_victim_proxies = NULL;
+#line 13822 "Commands.c"
+ }
+}
+
+
+static void delete_tag_command_on_proxy_broken (DeleteTagCommand* self) {
+ CommandManager* _tmp0_ = NULL;
+ CommandManager* _tmp1_ = NULL;
+#line 1628 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DELETE_TAG_COMMAND (self));
+#line 1629 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 1629 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 1629 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp1_);
+#line 1629 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp1_);
+#line 13840 "Commands.c"
+}
+
+
+static void delete_tag_command_class_init (DeleteTagCommandClass * klass) {
+#line 1579 "/home/jens/Source/shotwell/src/Commands.vala"
+ delete_tag_command_parent_class = g_type_class_peek_parent (klass);
+#line 1579 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (DeleteTagCommandPrivate));
+#line 1579 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->execute_on_source = delete_tag_command_real_execute_on_source;
+#line 1579 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->undo_on_source = delete_tag_command_real_undo_on_source;
+#line 1579 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = delete_tag_command_finalize;
+#line 13855 "Commands.c"
+}
+
+
+static void delete_tag_command_instance_init (DeleteTagCommand * self) {
+#line 1579 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = DELETE_TAG_COMMAND_GET_PRIVATE (self);
+#line 1580 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->recursive_victim_proxies = NULL;
+#line 13864 "Commands.c"
+}
+
+
+static void delete_tag_command_finalize (GObject* obj) {
+ DeleteTagCommand * self;
+#line 1579 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_DELETE_TAG_COMMAND, DeleteTagCommand);
+#line 1580 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->recursive_victim_proxies);
+#line 1579 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (delete_tag_command_parent_class)->finalize (obj);
+#line 13876 "Commands.c"
+}
+
+
+GType delete_tag_command_get_type (void) {
+ static volatile gsize delete_tag_command_type_id__volatile = 0;
+ if (g_once_init_enter (&delete_tag_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (DeleteTagCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) delete_tag_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (DeleteTagCommand), 0, (GInstanceInitFunc) delete_tag_command_instance_init, NULL };
+ GType delete_tag_command_type_id;
+ delete_tag_command_type_id = g_type_register_static (TYPE_SIMPLE_PROXYABLE_COMMAND, "DeleteTagCommand", &g_define_type_info, 0);
+ g_once_init_leave (&delete_tag_command_type_id__volatile, delete_tag_command_type_id);
+ }
+ return delete_tag_command_type_id__volatile;
+}
+
+
+NewChildTagCommand* new_child_tag_command_construct (GType object_type, Tag* tag) {
+ NewChildTagCommand * self = NULL;
+ Tag* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ Tag* _tmp2_ = NULL;
+ gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+#line 1636 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_TAG (tag), NULL);
+#line 1637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = tag;
+#line 1637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _ ("Create Tag");
+#line 1637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag;
+#line 1637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = data_object_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_DATA_OBJECT, DataObject));
+#line 1637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 1637 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (NewChildTagCommand*) simple_proxyable_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_PROXYABLE, Proxyable), _tmp1_, _tmp4_);
+#line 1637 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp4_);
+#line 1636 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 13917 "Commands.c"
+}
+
+
+NewChildTagCommand* new_child_tag_command_new (Tag* tag) {
+#line 1636 "/home/jens/Source/shotwell/src/Commands.vala"
+ return new_child_tag_command_construct (TYPE_NEW_CHILD_TAG_COMMAND, tag);
+#line 13924 "Commands.c"
+}
+
+
+static void new_child_tag_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ NewChildTagCommand * self;
+ Tag* tag = NULL;
+ DataSource* _tmp0_ = NULL;
+ Tag* _tmp1_ = NULL;
+ Tag* _tmp2_ = NULL;
+#line 1640 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_NEW_CHILD_TAG_COMMAND, NewChildTagCommand);
+#line 1640 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1641 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 1641 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_TAG, Tag));
+#line 1641 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag = _tmp1_;
+#line 1642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag_create_new_child (tag);
+#line 1642 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->created_child);
+#line 1642 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->created_child = _tmp2_;
+#line 1640 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (tag);
+#line 13952 "Commands.c"
+}
+
+
+static void new_child_tag_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ NewChildTagCommand * self;
+ TagSourceCollection* _tmp0_ = NULL;
+ TagSourceCollection* _tmp1_ = NULL;
+ Tag* _tmp2_ = NULL;
+ Marker* _tmp3_ = NULL;
+ Marker* _tmp4_ = NULL;
+#line 1645 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_NEW_CHILD_TAG_COMMAND, NewChildTagCommand);
+#line 1645 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 1646 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = tag_global;
+#line 1646 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = tag_global;
+#line 1646 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->created_child;
+#line 1646 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = data_collection_mark (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_DATA_OBJECT, DataObject));
+#line 1646 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 1646 "/home/jens/Source/shotwell/src/Commands.vala"
+ source_collection_destroy_marked (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_SOURCE_COLLECTION, SourceCollection), _tmp4_, TRUE, NULL, NULL, NULL);
+#line 1646 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp4_);
+#line 13981 "Commands.c"
+}
+
+
+Tag* new_child_tag_command_get_created_child (NewChildTagCommand* self) {
+ Tag* result = NULL;
+ Tag* _tmp0_ = NULL;
+ Tag* _tmp1_ = NULL;
+ Tag* _tmp2_ = NULL;
+#line 1649 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_NEW_CHILD_TAG_COMMAND (self), NULL);
+#line 1650 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->created_child;
+#line 1650 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ != NULL, "created_child != null");
+#line 1652 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->created_child;
+#line 1652 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 1652 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = _tmp2_;
+#line 1652 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 14004 "Commands.c"
+}
+
+
+static void new_child_tag_command_class_init (NewChildTagCommandClass * klass) {
+#line 1633 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_child_tag_command_parent_class = g_type_class_peek_parent (klass);
+#line 1633 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (NewChildTagCommandPrivate));
+#line 1633 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->execute_on_source = new_child_tag_command_real_execute_on_source;
+#line 1633 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->undo_on_source = new_child_tag_command_real_undo_on_source;
+#line 1633 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = new_child_tag_command_finalize;
+#line 14019 "Commands.c"
+}
+
+
+static void new_child_tag_command_instance_init (NewChildTagCommand * self) {
+#line 1633 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = NEW_CHILD_TAG_COMMAND_GET_PRIVATE (self);
+#line 1634 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->created_child = NULL;
+#line 14028 "Commands.c"
+}
+
+
+static void new_child_tag_command_finalize (GObject* obj) {
+ NewChildTagCommand * self;
+#line 1633 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_NEW_CHILD_TAG_COMMAND, NewChildTagCommand);
+#line 1634 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->created_child);
+#line 1633 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (new_child_tag_command_parent_class)->finalize (obj);
+#line 14040 "Commands.c"
+}
+
+
+GType new_child_tag_command_get_type (void) {
+ static volatile gsize new_child_tag_command_type_id__volatile = 0;
+ if (g_once_init_enter (&new_child_tag_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (NewChildTagCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) new_child_tag_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (NewChildTagCommand), 0, (GInstanceInitFunc) new_child_tag_command_instance_init, NULL };
+ GType new_child_tag_command_type_id;
+ new_child_tag_command_type_id = g_type_register_static (TYPE_SIMPLE_PROXYABLE_COMMAND, "NewChildTagCommand", &g_define_type_info, 0);
+ g_once_init_leave (&new_child_tag_command_type_id__volatile, new_child_tag_command_type_id);
+ }
+ return new_child_tag_command_type_id__volatile;
+}
+
+
+NewRootTagCommand* new_root_tag_command_construct (GType object_type) {
+ NewRootTagCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+#line 1660 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _ ("Create Tag");
+#line 1660 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (NewRootTagCommand*) page_command_construct (object_type, _tmp0_, "");
+#line 1659 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 14065 "Commands.c"
+}
+
+
+NewRootTagCommand* new_root_tag_command_new (void) {
+#line 1659 "/home/jens/Source/shotwell/src/Commands.vala"
+ return new_root_tag_command_construct (TYPE_NEW_ROOT_TAG_COMMAND);
+#line 14072 "Commands.c"
+}
+
+
+static void new_root_tag_command_real_execute (Command* base) {
+ NewRootTagCommand * self;
+ SourceProxy* _tmp0_ = NULL;
+#line 1663 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_NEW_ROOT_TAG_COMMAND, NewRootTagCommand);
+#line 1664 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->created_proxy;
+#line 1664 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_ == NULL) {
+#line 14085 "Commands.c"
+ Tag* _tmp1_ = NULL;
+ Tag* _tmp2_ = NULL;
+ SourceProxy* _tmp3_ = NULL;
+#line 1665 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = tag_create_new_root ();
+#line 1665 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 1665 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_PROXYABLE, Proxyable));
+#line 1665 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (self->priv->created_proxy);
+#line 1665 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->created_proxy = _tmp3_;
+#line 1665 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp2_);
+#line 14101 "Commands.c"
+ } else {
+ SourceProxy* _tmp4_ = NULL;
+ DataSource* _tmp5_ = NULL;
+ DataSource* _tmp6_ = NULL;
+#line 1667 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->created_proxy;
+#line 1667 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = source_proxy_get_source (_tmp4_);
+#line 1667 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 1667 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp6_);
+#line 14114 "Commands.c"
+ }
+}
+
+
+static void new_root_tag_command_real_undo (Command* base) {
+ NewRootTagCommand * self;
+ TagSourceCollection* _tmp0_ = NULL;
+ TagSourceCollection* _tmp1_ = NULL;
+ SourceProxy* _tmp2_ = NULL;
+ DataSource* _tmp3_ = NULL;
+ DataSource* _tmp4_ = NULL;
+ Marker* _tmp5_ = NULL;
+ Marker* _tmp6_ = NULL;
+#line 1670 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_NEW_ROOT_TAG_COMMAND, NewRootTagCommand);
+#line 1671 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = tag_global;
+#line 1671 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = tag_global;
+#line 1671 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->created_proxy;
+#line 1671 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = source_proxy_get_source (_tmp2_);
+#line 1671 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 1671 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = data_collection_mark (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_DATA_OBJECT, DataObject));
+#line 1671 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 1671 "/home/jens/Source/shotwell/src/Commands.vala"
+ source_collection_destroy_marked (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_SOURCE_COLLECTION, SourceCollection), _tmp6_, TRUE, NULL, NULL, NULL);
+#line 1671 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp6_);
+#line 1671 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp4_);
+#line 14150 "Commands.c"
+}
+
+
+Tag* new_root_tag_command_get_created_tag (NewRootTagCommand* self) {
+ Tag* result = NULL;
+ SourceProxy* _tmp0_ = NULL;
+ DataSource* _tmp1_ = NULL;
+#line 1674 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_NEW_ROOT_TAG_COMMAND (self), NULL);
+#line 1675 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->created_proxy;
+#line 1675 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = source_proxy_get_source (_tmp0_);
+#line 1675 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_TAG, Tag);
+#line 1675 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 14168 "Commands.c"
+}
+
+
+static void new_root_tag_command_class_init (NewRootTagCommandClass * klass) {
+#line 1656 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_root_tag_command_parent_class = g_type_class_peek_parent (klass);
+#line 1656 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (NewRootTagCommandPrivate));
+#line 1656 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = new_root_tag_command_real_execute;
+#line 1656 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = new_root_tag_command_real_undo;
+#line 1656 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = new_root_tag_command_finalize;
+#line 14183 "Commands.c"
+}
+
+
+static void new_root_tag_command_instance_init (NewRootTagCommand * self) {
+#line 1656 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = NEW_ROOT_TAG_COMMAND_GET_PRIVATE (self);
+#line 1657 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->created_proxy = NULL;
+#line 14192 "Commands.c"
+}
+
+
+static void new_root_tag_command_finalize (GObject* obj) {
+ NewRootTagCommand * self;
+#line 1656 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_NEW_ROOT_TAG_COMMAND, NewRootTagCommand);
+#line 1657 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (self->priv->created_proxy);
+#line 1656 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (new_root_tag_command_parent_class)->finalize (obj);
+#line 14204 "Commands.c"
+}
+
+
+GType new_root_tag_command_get_type (void) {
+ static volatile gsize new_root_tag_command_type_id__volatile = 0;
+ if (g_once_init_enter (&new_root_tag_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (NewRootTagCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) new_root_tag_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (NewRootTagCommand), 0, (GInstanceInitFunc) new_root_tag_command_instance_init, NULL };
+ GType new_root_tag_command_type_id;
+ new_root_tag_command_type_id = g_type_register_static (TYPE_PAGE_COMMAND, "NewRootTagCommand", &g_define_type_info, 0);
+ g_once_init_leave (&new_root_tag_command_type_id__volatile, new_root_tag_command_type_id);
+ }
+ return new_root_tag_command_type_id__volatile;
+}
+
+
+static void _reparent_tag_command_on_items_destroyed_source_collection_items_destroyed (SourceCollection* _sender, GeeCollection* destroyed, gpointer self) {
+#line 1724 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_on_items_destroyed ((ReparentTagCommand*) self, destroyed);
+#line 14223 "Commands.c"
+}
+
+
+ReparentTagCommand* reparent_tag_command_construct (GType object_type, Tag* tag, const gchar* new_parent_path) {
+ ReparentTagCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ Tag* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+ Tag* _tmp6_ = NULL;
+ gchar* _tmp7_ = NULL;
+ gboolean has_children = FALSE;
+ Tag* _tmp8_ = NULL;
+ GeeList* _tmp9_ = NULL;
+ GeeList* _tmp10_ = NULL;
+ gint _tmp11_ = 0;
+ gint _tmp12_ = 0;
+ gboolean _tmp13_ = FALSE;
+ gchar* basename = NULL;
+ Tag* _tmp14_ = NULL;
+ gchar* _tmp15_ = NULL;
+ const gchar* _tmp16_ = NULL;
+ gchar* new_to_path = NULL;
+ const gchar* _tmp38_ = NULL;
+ gchar* _tmp39_ = NULL;
+ const gchar* _tmp40_ = NULL;
+ TagSourceCollection* _tmp43_ = NULL;
+ const gchar* _tmp44_ = NULL;
+ gboolean _tmp45_ = FALSE;
+ GeeHashSet* _tmp46_ = NULL;
+ Tag* _tmp47_ = NULL;
+ GeeCollection* _tmp48_ = NULL;
+ GeeCollection* _tmp49_ = NULL;
+ LibraryPhotoSourceCollection* _tmp50_ = NULL;
+ VideoSourceCollection* _tmp51_ = NULL;
+#line 1694 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_TAG (tag), NULL);
+#line 1694 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (new_parent_path != NULL, NULL);
+#line 1695 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _ ("Move Tag \"%s\"");
+#line 1695 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = tag;
+#line 1695 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag_get_user_visible_name (_tmp1_);
+#line 1695 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 1695 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = g_strdup_printf (_tmp0_, _tmp3_);
+#line 1695 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 1695 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (ReparentTagCommand*) page_command_construct (object_type, _tmp5_, "");
+#line 1695 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp5_);
+#line 1695 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp3_);
+#line 1697 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = tag;
+#line 1697 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = tag_get_path (_tmp6_);
+#line 1697 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->from_path);
+#line 1697 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->from_path = _tmp7_;
+#line 1699 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = tag;
+#line 1699 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = tag_get_hierarchical_children (_tmp8_);
+#line 1699 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_;
+#line 1699 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1699 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = _tmp11_;
+#line 1699 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _tmp12_ > 0;
+#line 1699 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp10_);
+#line 1699 "/home/jens/Source/shotwell/src/Commands.vala"
+ has_children = _tmp13_;
+#line 1700 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = tag;
+#line 1700 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = tag_get_user_visible_name (_tmp14_);
+#line 1700 "/home/jens/Source/shotwell/src/Commands.vala"
+ basename = _tmp15_;
+#line 1702 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = new_parent_path;
+#line 1702 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (g_strcmp0 (_tmp16_, TAG_PATH_SEPARATOR_STRING) == 0) {
+#line 14317 "Commands.c"
+ gchar* _tmp17_ = NULL;
+ gboolean _tmp18_ = FALSE;
+ gchar* _tmp23_ = NULL;
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = has_children;
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp18_) {
+#line 14325 "Commands.c"
+ const gchar* _tmp19_ = NULL;
+ gchar* _tmp20_ = NULL;
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = basename;
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = g_strconcat (TAG_PATH_SEPARATOR_STRING, _tmp19_, NULL);
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp17_);
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _tmp20_;
+#line 14336 "Commands.c"
+ } else {
+ const gchar* _tmp21_ = NULL;
+ gchar* _tmp22_ = NULL;
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = basename;
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = g_strdup (_tmp21_);
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp17_);
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _tmp22_;
+#line 14348 "Commands.c"
+ }
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = g_strdup (_tmp17_);
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->to_path);
+#line 1703 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_path = _tmp23_;
+#line 1702 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp17_);
+#line 14358 "Commands.c"
+ } else {
+ const gchar* _tmp24_ = NULL;
+ gboolean _tmp25_ = FALSE;
+#line 1704 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = new_parent_path;
+#line 1704 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = g_str_has_prefix (_tmp24_, TAG_PATH_SEPARATOR_STRING);
+#line 1704 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp25_) {
+#line 14368 "Commands.c"
+ const gchar* _tmp26_ = NULL;
+ gchar* _tmp27_ = NULL;
+ gchar* _tmp28_ = NULL;
+ const gchar* _tmp29_ = NULL;
+ gchar* _tmp30_ = NULL;
+#line 1705 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = new_parent_path;
+#line 1705 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = g_strconcat (_tmp26_, TAG_PATH_SEPARATOR_STRING, NULL);
+#line 1705 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = _tmp27_;
+#line 1705 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = basename;
+#line 1705 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = g_strconcat (_tmp28_, _tmp29_, NULL);
+#line 1705 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->to_path);
+#line 1705 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_path = _tmp30_;
+#line 1705 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp28_);
+#line 14390 "Commands.c"
+ } else {
+ const gchar* _tmp31_ = NULL;
+ gchar* _tmp32_ = NULL;
+ gchar* _tmp33_ = NULL;
+ gchar* _tmp34_ = NULL;
+ gchar* _tmp35_ = NULL;
+ const gchar* _tmp36_ = NULL;
+ gchar* _tmp37_ = NULL;
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = new_parent_path;
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = g_strconcat (TAG_PATH_SEPARATOR_STRING, _tmp31_, NULL);
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = _tmp32_;
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = g_strconcat (_tmp33_, TAG_PATH_SEPARATOR_STRING, NULL);
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = _tmp34_;
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = basename;
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = g_strconcat (_tmp35_, _tmp36_, NULL);
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->to_path);
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_path = _tmp37_;
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp35_);
+#line 1707 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp33_);
+#line 14421 "Commands.c"
+ }
+ }
+#line 1710 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = self->priv->to_path;
+#line 1710 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = hierarchical_tag_utilities_get_root_path_form (_tmp38_);
+#line 1710 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_to_path = _tmp39_;
+#line 1711 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = new_to_path;
+#line 1711 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp40_ != NULL) {
+#line 14434 "Commands.c"
+ const gchar* _tmp41_ = NULL;
+ gchar* _tmp42_ = NULL;
+#line 1712 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = new_to_path;
+#line 1712 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = g_strdup (_tmp41_);
+#line 1712 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->to_path);
+#line 1712 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_path = _tmp42_;
+#line 14445 "Commands.c"
+ }
+#line 1714 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = tag_global;
+#line 1714 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = self->priv->to_path;
+#line 1714 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = tag_source_collection_exists (_tmp43_, _tmp44_, FALSE);
+#line 1714 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp45_) {
+#line 1715 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_path_exists = TRUE;
+#line 14457 "Commands.c"
+ }
+#line 1717 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp46_ = self->priv->sources_in_play;
+#line 1717 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp47_ = tag;
+#line 1717 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp48_ = tag_get_sources (_tmp47_);
+#line 1717 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp49_ = _tmp48_;
+#line 1717 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp46_, GEE_TYPE_COLLECTION, GeeCollection), _tmp49_);
+#line 1717 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp49_);
+#line 1719 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp50_ = library_photo_global;
+#line 1719 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, TYPE_SOURCE_COLLECTION, SourceCollection), "items-destroyed", (GCallback) _reparent_tag_command_on_items_destroyed_source_collection_items_destroyed, self, 0);
+#line 1720 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp51_ = video_global;
+#line 1720 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, TYPE_SOURCE_COLLECTION, SourceCollection), "items-destroyed", (GCallback) _reparent_tag_command_on_items_destroyed_source_collection_items_destroyed, self, 0);
+#line 1694 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (new_to_path);
+#line 1694 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (basename);
+#line 1694 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 14485 "Commands.c"
+}
+
+
+ReparentTagCommand* reparent_tag_command_new (Tag* tag, const gchar* new_parent_path) {
+#line 1694 "/home/jens/Source/shotwell/src/Commands.vala"
+ return reparent_tag_command_construct (TYPE_REPARENT_TAG_COMMAND, tag, new_parent_path);
+#line 14492 "Commands.c"
+}
+
+
+static void reparent_tag_command_on_items_destroyed (ReparentTagCommand* self, GeeCollection* destroyed) {
+#line 1728 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 1728 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_COLLECTION (destroyed));
+#line 14501 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = destroyed;
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp1_;
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 14514 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ DataSource* source = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ GeeHashSet* _tmp6_ = NULL;
+ DataSource* _tmp7_ = NULL;
+ gboolean _tmp8_ = FALSE;
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _source_it;
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 14531 "Commands.c"
+ }
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _source_it;
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp5_;
+#line 1730 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = self->priv->sources_in_play;
+#line 1730 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = source;
+#line 1730 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = gee_abstract_collection_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 1730 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp8_) {
+#line 14547 "Commands.c"
+ CommandManager* _tmp9_ = NULL;
+ CommandManager* _tmp10_ = NULL;
+#line 1731 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 1731 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_;
+#line 1731 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp10_);
+#line 1731 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp10_);
+#line 14558 "Commands.c"
+ }
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 14562 "Commands.c"
+ }
+#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 14566 "Commands.c"
+ }
+}
+
+
+static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) {
+ gchar* result = NULL;
+ GError * _inner_error_ = NULL;
+#line 1380 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (self != NULL, NULL);
+#line 1380 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (old != NULL, NULL);
+#line 1380 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (replacement != NULL, NULL);
+#line 14580 "Commands.c"
+ {
+ GRegex* regex = NULL;
+ const gchar* _tmp0_ = NULL;
+ gchar* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ GRegex* _tmp3_ = NULL;
+ GRegex* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+ GRegex* _tmp6_ = NULL;
+ const gchar* _tmp7_ = NULL;
+ gchar* _tmp8_ = NULL;
+ gchar* _tmp9_ = NULL;
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp0_ = old;
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp1_ = g_regex_escape_string (_tmp0_, -1);
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp2_ = _tmp1_;
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_);
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp4_ = _tmp3_;
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _g_free0 (_tmp2_);
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ regex = _tmp4_;
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ if (_inner_error_->domain == G_REGEX_ERROR) {
+#line 14611 "Commands.c"
+ goto __catch449_g_regex_error;
+ }
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_clear_error (&_inner_error_);
+#line 1382 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ return NULL;
+#line 14620 "Commands.c"
+ }
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp6_ = regex;
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp7_ = replacement;
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) -1, 0, _tmp7_, 0, &_inner_error_);
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp5_ = _tmp8_;
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _g_regex_unref0 (regex);
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ if (_inner_error_->domain == G_REGEX_ERROR) {
+#line 14636 "Commands.c"
+ goto __catch449_g_regex_error;
+ }
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _g_regex_unref0 (regex);
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_clear_error (&_inner_error_);
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ return NULL;
+#line 14647 "Commands.c"
+ }
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp9_ = _tmp5_;
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp5_ = NULL;
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ result = _tmp9_;
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _g_free0 (_tmp5_);
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _g_regex_unref0 (regex);
+#line 1383 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ return result;
+#line 14661 "Commands.c"
+ }
+ goto __finally449;
+ __catch449_g_regex_error:
+ {
+ GError* e = NULL;
+#line 1381 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ e = _inner_error_;
+#line 1381 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _inner_error_ = NULL;
+#line 1385 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_assert_not_reached ();
+#line 1381 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _g_error_free0 (e);
+#line 14675 "Commands.c"
+ }
+ __finally449:
+#line 1381 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1381 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+#line 1381 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_clear_error (&_inner_error_);
+#line 1381 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ return NULL;
+#line 14686 "Commands.c"
+ }
+}
+
+
+static GeeMap* reparent_tag_command_get_child_structure_at (ReparentTagCommand* self, const gchar* client_path) {
+ GeeMap* result = NULL;
+ gchar* path = NULL;
+ const gchar* _tmp0_ = NULL;
+ gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ gchar* _tmp6_ = NULL;
+ GeeMap* _result_ = NULL;
+ GeeHashMap* _tmp7_ = NULL;
+ TagSourceCollection* _tmp8_ = NULL;
+ const gchar* _tmp9_ = NULL;
+ gboolean _tmp10_ = FALSE;
+ Tag* tag = NULL;
+ const gchar* _tmp11_ = NULL;
+ Tag* _tmp12_ = NULL;
+ gchar* path_prefix = NULL;
+ Tag* _tmp13_ = NULL;
+ gchar* _tmp14_ = NULL;
+ gchar* _tmp15_ = NULL;
+ gchar* _tmp16_ = NULL;
+ gchar* _tmp17_ = NULL;
+#line 1735 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_REPARENT_TAG_COMMAND (self), NULL);
+#line 1735 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (client_path != NULL, NULL);
+#line 1736 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = client_path;
+#line 1736 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = hierarchical_tag_utilities_get_root_path_form (_tmp0_);
+#line 1736 "/home/jens/Source/shotwell/src/Commands.vala"
+ path = _tmp1_;
+#line 1737 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = path;
+#line 1737 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_ != NULL) {
+#line 14727 "Commands.c"
+ const gchar* _tmp4_ = NULL;
+#line 1737 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = path;
+#line 1737 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp4_;
+#line 14733 "Commands.c"
+ } else {
+ const gchar* _tmp5_ = NULL;
+#line 1737 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = client_path;
+#line 1737 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp5_;
+#line 14740 "Commands.c"
+ }
+#line 1737 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = g_strdup (_tmp2_);
+#line 1737 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (path);
+#line 1737 "/home/jens/Source/shotwell/src/Commands.vala"
+ path = _tmp6_;
+#line 1739 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, GEE_TYPE_SET, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1739 "/home/jens/Source/shotwell/src/Commands.vala"
+ _result_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_MAP, GeeMap);
+#line 1742 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = tag_global;
+#line 1742 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = path;
+#line 1742 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = tag_source_collection_exists (_tmp8_, _tmp9_, FALSE);
+#line 1742 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp10_) {
+#line 1743 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = _result_;
+#line 1743 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (path);
+#line 1743 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 14766 "Commands.c"
+ }
+#line 1745 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = path;
+#line 1745 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = tag_for_path (_tmp11_);
+#line 1745 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag = _tmp12_;
+#line 1747 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = tag;
+#line 1747 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = tag_get_path (_tmp13_);
+#line 1747 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _tmp14_;
+#line 1747 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = g_strconcat (_tmp15_, TAG_PATH_SEPARATOR_STRING, NULL);
+#line 1747 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _tmp16_;
+#line 1747 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp15_);
+#line 1747 "/home/jens/Source/shotwell/src/Commands.vala"
+ path_prefix = _tmp17_;
+#line 14788 "Commands.c"
+ {
+ GeeList* _t_list = NULL;
+ Tag* _tmp18_ = NULL;
+ GeeList* _tmp19_ = NULL;
+ gint _t_size = 0;
+ GeeList* _tmp20_ = NULL;
+ gint _tmp21_ = 0;
+ gint _tmp22_ = 0;
+ gint _t_index = 0;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = tag;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = tag_get_hierarchical_children (_tmp18_);
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_list = _tmp19_;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = _t_list;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = _tmp21_;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_size = _tmp22_;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_index = -1;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 14816 "Commands.c"
+ gint _tmp23_ = 0;
+ gint _tmp24_ = 0;
+ gint _tmp25_ = 0;
+ Tag* t = NULL;
+ GeeList* _tmp26_ = NULL;
+ gint _tmp27_ = 0;
+ gpointer _tmp28_ = NULL;
+ gchar* child_subpath = NULL;
+ Tag* _tmp29_ = NULL;
+ gchar* _tmp30_ = NULL;
+ gchar* _tmp31_ = NULL;
+ const gchar* _tmp32_ = NULL;
+ gchar* _tmp33_ = NULL;
+ gchar* _tmp34_ = NULL;
+ GeeMap* _tmp35_ = NULL;
+ const gchar* _tmp36_ = NULL;
+ GeeHashSet* _tmp37_ = NULL;
+ GeeHashSet* _tmp38_ = NULL;
+ GeeMap* _tmp39_ = NULL;
+ const gchar* _tmp40_ = NULL;
+ gpointer _tmp41_ = NULL;
+ GeeSet* _tmp42_ = NULL;
+ Tag* _tmp43_ = NULL;
+ GeeCollection* _tmp44_ = NULL;
+ GeeCollection* _tmp45_ = NULL;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _t_index;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_index = _tmp23_ + 1;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _t_index;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = _t_size;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp24_ < _tmp25_)) {
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 14854 "Commands.c"
+ }
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _t_list;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = _t_index;
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = gee_list_get (_tmp26_, _tmp27_);
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ t = (Tag*) _tmp28_;
+#line 1749 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = t;
+#line 1749 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = tag_get_path (_tmp29_);
+#line 1749 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = _tmp30_;
+#line 1749 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = path_prefix;
+#line 1749 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = string_replace (_tmp31_, _tmp32_, "");
+#line 1749 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = _tmp33_;
+#line 1749 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp31_);
+#line 1749 "/home/jens/Source/shotwell/src/Commands.vala"
+ child_subpath = _tmp34_;
+#line 1751 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = _result_;
+#line 1751 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = child_subpath;
+#line 1751 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = gee_hash_set_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1751 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = _tmp37_;
+#line 1751 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_map_set (_tmp35_, _tmp36_, G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, GEE_TYPE_SET, GeeSet));
+#line 1751 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp38_);
+#line 1752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = _result_;
+#line 1752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = child_subpath;
+#line 1752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = gee_map_get (_tmp39_, _tmp40_);
+#line 1752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = (GeeSet*) _tmp41_;
+#line 1752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = t;
+#line 1752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = tag_get_sources (_tmp43_);
+#line 1752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = _tmp44_;
+#line 1752 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp42_, GEE_TYPE_COLLECTION, GeeCollection), _tmp45_);
+#line 1752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp45_);
+#line 1752 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp42_);
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (child_subpath);
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (t);
+#line 14916 "Commands.c"
+ }
+#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_t_list);
+#line 14920 "Commands.c"
+ }
+#line 1755 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = _result_;
+#line 1755 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (path_prefix);
+#line 1755 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (tag);
+#line 1755 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (path);
+#line 1755 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 14932 "Commands.c"
+}
+
+
+static void reparent_tag_command_restore_child_attachments_at (ReparentTagCommand* self, const gchar* client_path, GeeMap* child_structure) {
+ gchar* new_path = NULL;
+ const gchar* _tmp0_ = NULL;
+ gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ gchar* path = NULL;
+ gchar* _tmp6_ = NULL;
+ TagSourceCollection* _tmp7_ = NULL;
+ const gchar* _tmp8_ = NULL;
+ gboolean _tmp9_ = FALSE;
+ Tag* tag = NULL;
+ const gchar* _tmp10_ = NULL;
+ Tag* _tmp11_ = NULL;
+#line 1758 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 1758 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (client_path != NULL);
+#line 1758 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_MAP (child_structure));
+#line 1761 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = client_path;
+#line 1761 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = hierarchical_tag_utilities_get_root_path_form (_tmp0_);
+#line 1761 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_path = _tmp1_;
+#line 1762 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = new_path;
+#line 1762 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_ != NULL) {
+#line 14966 "Commands.c"
+ const gchar* _tmp4_ = NULL;
+#line 1762 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = new_path;
+#line 1762 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp4_;
+#line 14972 "Commands.c"
+ } else {
+ const gchar* _tmp5_ = NULL;
+#line 1762 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = client_path;
+#line 1762 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp5_;
+#line 14979 "Commands.c"
+ }
+#line 1762 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = g_strdup (_tmp2_);
+#line 1762 "/home/jens/Source/shotwell/src/Commands.vala"
+ path = _tmp6_;
+#line 1764 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = tag_global;
+#line 1764 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = path;
+#line 1764 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = tag_source_collection_exists (_tmp7_, _tmp8_, FALSE);
+#line 1764 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp9_, "Tag.global.exists(path)");
+#line 1765 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = path;
+#line 1765 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = tag_for_path (_tmp10_);
+#line 1765 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag = _tmp11_;
+#line 14999 "Commands.c"
+ {
+ GeeIterator* _child_subpath_it = NULL;
+ GeeMap* _tmp12_ = NULL;
+ GeeSet* _tmp13_ = NULL;
+ GeeSet* _tmp14_ = NULL;
+ GeeSet* _tmp15_ = NULL;
+ GeeIterator* _tmp16_ = NULL;
+ GeeIterator* _tmp17_ = NULL;
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = child_structure;
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = gee_map_get_keys (_tmp12_);
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _tmp13_;
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _tmp14_;
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _tmp16_;
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp15_);
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _child_subpath_it = _tmp17_;
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 15026 "Commands.c"
+ GeeIterator* _tmp18_ = NULL;
+ gboolean _tmp19_ = FALSE;
+ gchar* child_subpath = NULL;
+ GeeIterator* _tmp20_ = NULL;
+ gpointer _tmp21_ = NULL;
+ gchar* child_path = NULL;
+ Tag* _tmp22_ = NULL;
+ gchar* _tmp23_ = NULL;
+ gchar* _tmp24_ = NULL;
+ gchar* _tmp25_ = NULL;
+ gchar* _tmp26_ = NULL;
+ const gchar* _tmp27_ = NULL;
+ gchar* _tmp28_ = NULL;
+ gchar* _tmp29_ = NULL;
+ Tag* _tmp30_ = NULL;
+ gchar* _tmp31_ = NULL;
+ gchar* _tmp32_ = NULL;
+ gboolean _tmp33_ = FALSE;
+ gboolean _tmp34_ = FALSE;
+ TagSourceCollection* _tmp43_ = NULL;
+ const gchar* _tmp44_ = NULL;
+ gboolean _tmp45_ = FALSE;
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = _child_subpath_it;
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = gee_iterator_next (_tmp18_);
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp19_) {
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 15057 "Commands.c"
+ }
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = _child_subpath_it;
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = gee_iterator_get (_tmp20_);
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ child_subpath = (gchar*) _tmp21_;
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = tag;
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = tag_get_path (_tmp22_);
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _tmp23_;
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = g_strconcat (_tmp24_, TAG_PATH_SEPARATOR_STRING, NULL);
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _tmp25_;
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = child_subpath;
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = g_strconcat (_tmp26_, _tmp27_, NULL);
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = _tmp28_;
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp26_);
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp24_);
+#line 1768 "/home/jens/Source/shotwell/src/Commands.vala"
+ child_path = _tmp29_;
+#line 1770 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = tag;
+#line 1770 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = tag_get_path (_tmp30_);
+#line 1770 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = _tmp31_;
+#line 1770 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = g_str_has_prefix (_tmp32_, TAG_PATH_SEPARATOR_STRING);
+#line 1770 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = !_tmp33_;
+#line 1770 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp32_);
+#line 1770 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp34_) {
+#line 15101 "Commands.c"
+ Tag* _tmp35_ = NULL;
+ Tag* _tmp36_ = NULL;
+ gchar* _tmp37_ = NULL;
+ gchar* _tmp38_ = NULL;
+ gchar* _tmp39_ = NULL;
+ gchar* _tmp40_ = NULL;
+ const gchar* _tmp41_ = NULL;
+ gchar* _tmp42_ = NULL;
+#line 1771 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = tag;
+#line 1771 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_promote (_tmp35_);
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = tag;
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = tag_get_path (_tmp36_);
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = _tmp37_;
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = g_strconcat (_tmp38_, TAG_PATH_SEPARATOR_STRING, NULL);
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = _tmp39_;
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = child_subpath;
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = g_strconcat (_tmp40_, _tmp41_, NULL);
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (child_path);
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ child_path = _tmp42_;
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp40_);
+#line 1772 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp38_);
+#line 15136 "Commands.c"
+ }
+#line 1775 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = tag_global;
+#line 1775 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = child_path;
+#line 1775 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = tag_source_collection_exists (_tmp43_, _tmp44_, FALSE);
+#line 1775 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp45_, "Tag.global.exists(child_path)");
+#line 15146 "Commands.c"
+ {
+ GeeIterator* _s_it = NULL;
+ GeeMap* _tmp46_ = NULL;
+ const gchar* _tmp47_ = NULL;
+ gpointer _tmp48_ = NULL;
+ GeeSet* _tmp49_ = NULL;
+ GeeIterator* _tmp50_ = NULL;
+ GeeIterator* _tmp51_ = NULL;
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp46_ = child_structure;
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp47_ = child_subpath;
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp48_ = gee_map_get (_tmp46_, _tmp47_);
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp49_ = (GeeSet*) _tmp48_;
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp50_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp49_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp51_ = _tmp50_;
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp49_);
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _s_it = _tmp51_;
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 15173 "Commands.c"
+ GeeIterator* _tmp52_ = NULL;
+ gboolean _tmp53_ = FALSE;
+ MediaSource* s = NULL;
+ GeeIterator* _tmp54_ = NULL;
+ gpointer _tmp55_ = NULL;
+ const gchar* _tmp56_ = NULL;
+ Tag* _tmp57_ = NULL;
+ Tag* _tmp58_ = NULL;
+ MediaSource* _tmp59_ = NULL;
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp52_ = _s_it;
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp53_ = gee_iterator_next (_tmp52_);
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp53_) {
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 15191 "Commands.c"
+ }
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp54_ = _s_it;
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp55_ = gee_iterator_get (_tmp54_);
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ s = (MediaSource*) _tmp55_;
+#line 1778 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp56_ = child_path;
+#line 1778 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp57_ = tag_for_path (_tmp56_);
+#line 1778 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp58_ = _tmp57_;
+#line 1778 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp59_ = s;
+#line 1778 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach (_tmp58_, _tmp59_);
+#line 1778 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp58_);
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (s);
+#line 15213 "Commands.c"
+ }
+#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_s_it);
+#line 15217 "Commands.c"
+ }
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (child_path);
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (child_subpath);
+#line 15223 "Commands.c"
+ }
+#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_child_subpath_it);
+#line 15227 "Commands.c"
+ }
+#line 1758 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (tag);
+#line 1758 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (path);
+#line 1758 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (new_path);
+#line 15235 "Commands.c"
+}
+
+
+static void reparent_tag_command_reattach_in_play_sources_at (ReparentTagCommand* self, const gchar* client_path) {
+ gchar* new_path = NULL;
+ const gchar* _tmp0_ = NULL;
+ gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ gchar* path = NULL;
+ gchar* _tmp6_ = NULL;
+ TagSourceCollection* _tmp7_ = NULL;
+ const gchar* _tmp8_ = NULL;
+ gboolean _tmp9_ = FALSE;
+ Tag* tag = NULL;
+ const gchar* _tmp10_ = NULL;
+ Tag* _tmp11_ = NULL;
+#line 1782 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 1782 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (client_path != NULL);
+#line 1783 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = client_path;
+#line 1783 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = hierarchical_tag_utilities_get_root_path_form (_tmp0_);
+#line 1783 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_path = _tmp1_;
+#line 1784 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = new_path;
+#line 1784 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_ != NULL) {
+#line 15267 "Commands.c"
+ const gchar* _tmp4_ = NULL;
+#line 1784 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = new_path;
+#line 1784 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp4_;
+#line 15273 "Commands.c"
+ } else {
+ const gchar* _tmp5_ = NULL;
+#line 1784 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = client_path;
+#line 1784 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp5_;
+#line 15280 "Commands.c"
+ }
+#line 1784 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = g_strdup (_tmp2_);
+#line 1784 "/home/jens/Source/shotwell/src/Commands.vala"
+ path = _tmp6_;
+#line 1786 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = tag_global;
+#line 1786 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = path;
+#line 1786 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = tag_source_collection_exists (_tmp7_, _tmp8_, FALSE);
+#line 1786 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp9_, "Tag.global.exists(path)");
+#line 1788 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = path;
+#line 1788 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = tag_for_path (_tmp10_);
+#line 1788 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag = _tmp11_;
+#line 15300 "Commands.c"
+ {
+ GeeIterator* _s_it = NULL;
+ GeeHashSet* _tmp12_ = NULL;
+ GeeIterator* _tmp13_ = NULL;
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = self->priv->sources_in_play;
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = gee_abstract_collection_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ _s_it = _tmp13_;
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 15313 "Commands.c"
+ GeeIterator* _tmp14_ = NULL;
+ gboolean _tmp15_ = FALSE;
+ MediaSource* s = NULL;
+ GeeIterator* _tmp16_ = NULL;
+ gpointer _tmp17_ = NULL;
+ Tag* _tmp18_ = NULL;
+ MediaSource* _tmp19_ = NULL;
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _s_it;
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_iterator_next (_tmp14_);
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp15_) {
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 15329 "Commands.c"
+ }
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _s_it;
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = gee_iterator_get (_tmp16_);
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ s = (MediaSource*) _tmp17_;
+#line 1791 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = tag;
+#line 1791 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = s;
+#line 1791 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach (_tmp18_, _tmp19_);
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (s);
+#line 15345 "Commands.c"
+ }
+#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_s_it);
+#line 15349 "Commands.c"
+ }
+#line 1782 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (tag);
+#line 1782 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (path);
+#line 1782 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (new_path);
+#line 15357 "Commands.c"
+}
+
+
+static void reparent_tag_command_save_before_state (ReparentTagCommand* self) {
+ GeeList* _tmp0_ = NULL;
+ GeeList* _tmp1_ = NULL;
+ GeeArrayList* _tmp2_ = NULL;
+ GeeArrayList* _tmp3_ = NULL;
+ GeeMap* _tmp4_ = NULL;
+ const gchar* _tmp5_ = NULL;
+ GeeMap* _tmp6_ = NULL;
+ TagSourceCollection* _tmp7_ = NULL;
+ const gchar* _tmp8_ = NULL;
+ gboolean _tmp9_ = FALSE;
+ Tag* from_tag = NULL;
+ const gchar* _tmp10_ = NULL;
+ Tag* _tmp11_ = NULL;
+ GeeList* _tmp12_ = NULL;
+ Tag* _tmp13_ = NULL;
+ SourceProxy* _tmp14_ = NULL;
+ SourceProxy* _tmp15_ = NULL;
+ GeeList* parent_paths = NULL;
+ const gchar* _tmp16_ = NULL;
+ GeeList* _tmp17_ = NULL;
+ GeeList* _tmp18_ = NULL;
+ gint _tmp19_ = 0;
+ gint _tmp20_ = 0;
+ const gchar* _tmp26_ = NULL;
+ const gchar* _tmp30_ = NULL;
+ const gchar* _tmp42_ = NULL;
+ const gchar* _tmp59_ = NULL;
+ GeeList* from_children = NULL;
+ Tag* _tmp66_ = NULL;
+ GeeList* _tmp67_ = NULL;
+ const gchar* _tmp81_ = NULL;
+ const gchar* _tmp100_ = NULL;
+#line 1794 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 1795 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->src_before_state;
+#line 1795 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ == NULL, "src_before_state == null");
+#line 1796 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->dest_before_state;
+#line 1796 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp1_ == NULL, "dest_before_state == null");
+#line 1798 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = gee_array_list_new (TYPE_SOURCE_PROXY, (GBoxedCopyFunc) source_proxy_ref, source_proxy_unref, NULL, NULL, NULL);
+#line 1798 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->src_before_state);
+#line 1798 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->src_before_state = G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_LIST, GeeList);
+#line 1799 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_array_list_new (TYPE_SOURCE_PROXY, (GBoxedCopyFunc) source_proxy_ref, source_proxy_unref, NULL, NULL, NULL);
+#line 1799 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->dest_before_state);
+#line 1799 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->dest_before_state = G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_LIST, GeeList);
+#line 1802 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->in_play_child_structure;
+#line 1802 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp4_ == NULL, "in_play_child_structure == null");
+#line 1803 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->from_path;
+#line 1803 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = reparent_tag_command_get_child_structure_at (self, _tmp5_);
+#line 1803 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->in_play_child_structure);
+#line 1803 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->in_play_child_structure = _tmp6_;
+#line 1806 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = tag_global;
+#line 1806 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = self->priv->from_path;
+#line 1806 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = tag_source_collection_exists (_tmp7_, _tmp8_, FALSE);
+#line 1806 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp9_, "Tag.global.exists(from_path)");
+#line 1807 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = self->priv->from_path;
+#line 1807 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = tag_for_path (_tmp10_);
+#line 1807 "/home/jens/Source/shotwell/src/Commands.vala"
+ from_tag = _tmp11_;
+#line 1808 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = self->priv->src_before_state;
+#line 1808 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = from_tag;
+#line 1808 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, TYPE_PROXYABLE, Proxyable));
+#line 1808 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _tmp14_;
+#line 1808 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, GEE_TYPE_COLLECTION, GeeCollection), _tmp15_);
+#line 1808 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp15_);
+#line 1811 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = self->priv->to_path;
+#line 1811 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = hierarchical_tag_utilities_enumerate_parent_paths (_tmp16_);
+#line 1811 "/home/jens/Source/shotwell/src/Commands.vala"
+ parent_paths = _tmp17_;
+#line 1812 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = parent_paths;
+#line 1812 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1812 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = _tmp19_;
+#line 1812 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp20_ > 0) {
+#line 15468 "Commands.c"
+ GeeList* _tmp21_ = NULL;
+ GeeList* _tmp22_ = NULL;
+ gint _tmp23_ = 0;
+ gint _tmp24_ = 0;
+ gpointer _tmp25_ = NULL;
+#line 1813 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = parent_paths;
+#line 1813 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = parent_paths;
+#line 1813 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1813 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _tmp23_;
+#line 1813 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = gee_list_get (_tmp21_, _tmp24_ - 1);
+#line 1813 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->to_path_parent_path);
+#line 1813 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_path_parent_path = (gchar*) _tmp25_;
+#line 15488 "Commands.c"
+ }
+#line 1814 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = self->priv->to_path_parent_path;
+#line 1814 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp26_ != NULL) {
+#line 15494 "Commands.c"
+ GeeMap* _tmp27_ = NULL;
+ const gchar* _tmp28_ = NULL;
+ GeeMap* _tmp29_ = NULL;
+#line 1815 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = self->priv->existing_dest_child_structure;
+#line 1815 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp27_ == NULL, "existing_dest_child_structure == null");
+#line 1816 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = self->priv->to_path_parent_path;
+#line 1816 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = reparent_tag_command_get_child_structure_at (self, _tmp28_);
+#line 1816 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->existing_dest_child_structure);
+#line 1816 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->existing_dest_child_structure = _tmp29_;
+#line 15510 "Commands.c"
+ }
+#line 1820 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = self->priv->to_path_parent_path;
+#line 1820 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp30_ == NULL) {
+#line 15516 "Commands.c"
+ GeeMap* _tmp31_ = NULL;
+ GeeSet* _tmp32_ = NULL;
+ const gchar* _tmp33_ = NULL;
+ GeeMap* _tmp34_ = NULL;
+ GeeHashSet* _tmp35_ = NULL;
+ GeeSet* _tmp36_ = NULL;
+ const gchar* _tmp37_ = NULL;
+ Tag* _tmp38_ = NULL;
+ Tag* _tmp39_ = NULL;
+ GeeCollection* _tmp40_ = NULL;
+ GeeCollection* _tmp41_ = NULL;
+#line 1821 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = self->priv->existing_dest_child_structure;
+#line 1821 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp31_ == NULL, "existing_dest_child_structure == null");
+#line 1822 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = self->priv->existing_dest_membership;
+#line 1822 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp32_ == NULL, "existing_dest_membership == null");
+#line 1823 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = self->priv->to_path;
+#line 1823 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = reparent_tag_command_get_child_structure_at (self, _tmp33_);
+#line 1823 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->existing_dest_child_structure);
+#line 1823 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->existing_dest_child_structure = _tmp34_;
+#line 1824 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = gee_hash_set_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1824 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->existing_dest_membership);
+#line 1824 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->existing_dest_membership = G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, GEE_TYPE_SET, GeeSet);
+#line 1825 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = self->priv->existing_dest_membership;
+#line 1825 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = self->priv->to_path;
+#line 1825 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = tag_for_path (_tmp37_);
+#line 1825 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = _tmp38_;
+#line 1825 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = tag_get_sources (_tmp39_);
+#line 1825 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = _tmp40_;
+#line 1825 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, GEE_TYPE_COLLECTION, GeeCollection), _tmp41_);
+#line 1825 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp41_);
+#line 1825 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp39_);
+#line 15568 "Commands.c"
+ }
+#line 1829 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = self->priv->to_path_parent_path;
+#line 1829 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp42_ != NULL) {
+#line 15574 "Commands.c"
+ gchar* new_tpp = NULL;
+ const gchar* _tmp43_ = NULL;
+ gchar* _tmp44_ = NULL;
+ const gchar* _tmp45_ = NULL;
+ const gchar* _tmp46_ = NULL;
+ gchar* _tmp49_ = NULL;
+ TagSourceCollection* _tmp50_ = NULL;
+ const gchar* _tmp51_ = NULL;
+ gboolean _tmp52_ = FALSE;
+ GeeList* _tmp53_ = NULL;
+ const gchar* _tmp54_ = NULL;
+ Tag* _tmp55_ = NULL;
+ Tag* _tmp56_ = NULL;
+ SourceProxy* _tmp57_ = NULL;
+ SourceProxy* _tmp58_ = NULL;
+#line 1830 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = self->priv->to_path_parent_path;
+#line 1830 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = hierarchical_tag_utilities_get_root_path_form (_tmp43_);
+#line 1830 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_tpp = _tmp44_;
+#line 1831 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp46_ = new_tpp;
+#line 1831 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp46_ != NULL) {
+#line 15600 "Commands.c"
+ const gchar* _tmp47_ = NULL;
+#line 1831 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp47_ = new_tpp;
+#line 1831 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = _tmp47_;
+#line 15606 "Commands.c"
+ } else {
+ const gchar* _tmp48_ = NULL;
+#line 1831 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp48_ = self->priv->to_path_parent_path;
+#line 1831 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = _tmp48_;
+#line 15613 "Commands.c"
+ }
+#line 1831 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp49_ = g_strdup (_tmp45_);
+#line 1831 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->to_path_parent_path);
+#line 1831 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_path_parent_path = _tmp49_;
+#line 1832 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp50_ = tag_global;
+#line 1832 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp51_ = self->priv->to_path_parent_path;
+#line 1832 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp52_ = tag_source_collection_exists (_tmp50_, _tmp51_, FALSE);
+#line 1832 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp52_, "Tag.global.exists(to_path_parent_path)");
+#line 1833 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp53_ = self->priv->dest_before_state;
+#line 1833 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp54_ = self->priv->to_path_parent_path;
+#line 1833 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp55_ = tag_for_path (_tmp54_);
+#line 1833 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp56_ = _tmp55_;
+#line 1833 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp57_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp56_, TYPE_PROXYABLE, Proxyable));
+#line 1833 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp58_ = _tmp57_;
+#line 1833 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp53_, GEE_TYPE_COLLECTION, GeeCollection), _tmp58_);
+#line 1833 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp58_);
+#line 1833 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp56_);
+#line 1829 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (new_tpp);
+#line 15649 "Commands.c"
+ }
+#line 1837 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp59_ = self->priv->to_path_parent_path;
+#line 1837 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp59_ == NULL) {
+#line 15655 "Commands.c"
+ GeeList* _tmp60_ = NULL;
+ const gchar* _tmp61_ = NULL;
+ Tag* _tmp62_ = NULL;
+ Tag* _tmp63_ = NULL;
+ SourceProxy* _tmp64_ = NULL;
+ SourceProxy* _tmp65_ = NULL;
+#line 1838 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp60_ = self->priv->dest_before_state;
+#line 1838 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp61_ = self->priv->to_path;
+#line 1838 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp62_ = tag_for_path (_tmp61_);
+#line 1838 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp63_ = _tmp62_;
+#line 1838 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp64_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp63_, TYPE_PROXYABLE, Proxyable));
+#line 1838 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp65_ = _tmp64_;
+#line 1838 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp60_, GEE_TYPE_COLLECTION, GeeCollection), _tmp65_);
+#line 1838 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp65_);
+#line 1838 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp63_);
+#line 15680 "Commands.c"
+ }
+#line 1842 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp66_ = from_tag;
+#line 1842 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp67_ = tag_get_hierarchical_children (_tmp66_);
+#line 1842 "/home/jens/Source/shotwell/src/Commands.vala"
+ from_children = _tmp67_;
+#line 15688 "Commands.c"
+ {
+ gint i = 0;
+ GeeList* _tmp68_ = NULL;
+ gint _tmp69_ = 0;
+ gint _tmp70_ = 0;
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp68_ = from_children;
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp69_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp68_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp70_ = _tmp69_;
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp70_ - 1;
+#line 15702 "Commands.c"
+ {
+ gboolean _tmp71_ = FALSE;
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp71_ = TRUE;
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 15709 "Commands.c"
+ gint _tmp73_ = 0;
+ GeeList* _tmp74_ = NULL;
+ GeeList* _tmp75_ = NULL;
+ gint _tmp76_ = 0;
+ gpointer _tmp77_ = NULL;
+ Tag* _tmp78_ = NULL;
+ SourceProxy* _tmp79_ = NULL;
+ SourceProxy* _tmp80_ = NULL;
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp71_) {
+#line 15720 "Commands.c"
+ gint _tmp72_ = 0;
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp72_ = i;
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp72_ - 1;
+#line 15726 "Commands.c"
+ }
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp71_ = FALSE;
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp73_ = i;
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp73_ >= 0)) {
+#line 1843 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 15736 "Commands.c"
+ }
+#line 1844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp74_ = self->priv->src_before_state;
+#line 1844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp75_ = from_children;
+#line 1844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp76_ = i;
+#line 1844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp77_ = gee_list_get (_tmp75_, _tmp76_);
+#line 1844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp78_ = (Tag*) _tmp77_;
+#line 1844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp79_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp78_, TYPE_PROXYABLE, Proxyable));
+#line 1844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp80_ = _tmp79_;
+#line 1844 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp74_, GEE_TYPE_COLLECTION, GeeCollection), _tmp80_);
+#line 1844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp80_);
+#line 1844 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp78_);
+#line 15758 "Commands.c"
+ }
+ }
+ }
+#line 1848 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp81_ = self->priv->to_path_parent_path;
+#line 1848 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp81_ != NULL) {
+#line 15766 "Commands.c"
+ GeeList* to_children = NULL;
+ const gchar* _tmp82_ = NULL;
+ Tag* _tmp83_ = NULL;
+ Tag* _tmp84_ = NULL;
+ GeeList* _tmp85_ = NULL;
+ GeeList* _tmp86_ = NULL;
+#line 1849 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp82_ = self->priv->to_path_parent_path;
+#line 1849 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp83_ = tag_for_path (_tmp82_);
+#line 1849 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp84_ = _tmp83_;
+#line 1849 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp85_ = tag_get_hierarchical_children (_tmp84_);
+#line 1849 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp86_ = _tmp85_;
+#line 1849 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp84_);
+#line 1849 "/home/jens/Source/shotwell/src/Commands.vala"
+ to_children = _tmp86_;
+#line 15787 "Commands.c"
+ {
+ gint i = 0;
+ GeeList* _tmp87_ = NULL;
+ gint _tmp88_ = 0;
+ gint _tmp89_ = 0;
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp87_ = to_children;
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp88_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp87_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp89_ = _tmp88_;
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp89_ - 1;
+#line 15801 "Commands.c"
+ {
+ gboolean _tmp90_ = FALSE;
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp90_ = TRUE;
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 15808 "Commands.c"
+ gint _tmp92_ = 0;
+ GeeList* _tmp93_ = NULL;
+ GeeList* _tmp94_ = NULL;
+ gint _tmp95_ = 0;
+ gpointer _tmp96_ = NULL;
+ Tag* _tmp97_ = NULL;
+ SourceProxy* _tmp98_ = NULL;
+ SourceProxy* _tmp99_ = NULL;
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp90_) {
+#line 15819 "Commands.c"
+ gint _tmp91_ = 0;
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp91_ = i;
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp91_ - 1;
+#line 15825 "Commands.c"
+ }
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp90_ = FALSE;
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp92_ = i;
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp92_ >= 0)) {
+#line 1850 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 15835 "Commands.c"
+ }
+#line 1851 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp93_ = self->priv->dest_before_state;
+#line 1851 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp94_ = to_children;
+#line 1851 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp95_ = i;
+#line 1851 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp96_ = gee_list_get (_tmp94_, _tmp95_);
+#line 1851 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp97_ = (Tag*) _tmp96_;
+#line 1851 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp98_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp97_, TYPE_PROXYABLE, Proxyable));
+#line 1851 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp99_ = _tmp98_;
+#line 1851 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp93_, GEE_TYPE_COLLECTION, GeeCollection), _tmp99_);
+#line 1851 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp99_);
+#line 1851 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp97_);
+#line 15857 "Commands.c"
+ }
+ }
+ }
+#line 1848 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (to_children);
+#line 15863 "Commands.c"
+ }
+#line 1856 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp100_ = self->priv->to_path_parent_path;
+#line 1856 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp100_ == NULL) {
+#line 15869 "Commands.c"
+ GeeList* to_children = NULL;
+ const gchar* _tmp101_ = NULL;
+ Tag* _tmp102_ = NULL;
+ Tag* _tmp103_ = NULL;
+ GeeList* _tmp104_ = NULL;
+ GeeList* _tmp105_ = NULL;
+#line 1857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp101_ = self->priv->to_path;
+#line 1857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp102_ = tag_for_path (_tmp101_);
+#line 1857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp103_ = _tmp102_;
+#line 1857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp104_ = tag_get_hierarchical_children (_tmp103_);
+#line 1857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp105_ = _tmp104_;
+#line 1857 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp103_);
+#line 1857 "/home/jens/Source/shotwell/src/Commands.vala"
+ to_children = _tmp105_;
+#line 15890 "Commands.c"
+ {
+ gint i = 0;
+ GeeList* _tmp106_ = NULL;
+ gint _tmp107_ = 0;
+ gint _tmp108_ = 0;
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp106_ = to_children;
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp107_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp106_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp108_ = _tmp107_;
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp108_ - 1;
+#line 15904 "Commands.c"
+ {
+ gboolean _tmp109_ = FALSE;
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp109_ = TRUE;
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 15911 "Commands.c"
+ gint _tmp111_ = 0;
+ GeeList* _tmp112_ = NULL;
+ GeeList* _tmp113_ = NULL;
+ gint _tmp114_ = 0;
+ gpointer _tmp115_ = NULL;
+ Tag* _tmp116_ = NULL;
+ SourceProxy* _tmp117_ = NULL;
+ SourceProxy* _tmp118_ = NULL;
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp109_) {
+#line 15922 "Commands.c"
+ gint _tmp110_ = 0;
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp110_ = i;
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp110_ - 1;
+#line 15928 "Commands.c"
+ }
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp109_ = FALSE;
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp111_ = i;
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp111_ >= 0)) {
+#line 1858 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 15938 "Commands.c"
+ }
+#line 1859 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp112_ = self->priv->dest_before_state;
+#line 1859 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp113_ = to_children;
+#line 1859 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp114_ = i;
+#line 1859 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp115_ = gee_list_get (_tmp113_, _tmp114_);
+#line 1859 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp116_ = (Tag*) _tmp115_;
+#line 1859 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp117_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp116_, TYPE_PROXYABLE, Proxyable));
+#line 1859 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp118_ = _tmp117_;
+#line 1859 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp112_, GEE_TYPE_COLLECTION, GeeCollection), _tmp118_);
+#line 1859 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp118_);
+#line 1859 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp116_);
+#line 15960 "Commands.c"
+ }
+ }
+ }
+#line 1856 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (to_children);
+#line 15966 "Commands.c"
+ }
+#line 1794 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (from_children);
+#line 1794 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (parent_paths);
+#line 1794 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (from_tag);
+#line 15974 "Commands.c"
+}
+
+
+static glong string_strnlen (gchar* str, glong maxlen) {
+ glong result = 0L;
+ gchar* end = NULL;
+ gchar* _tmp0_ = NULL;
+ glong _tmp1_ = 0L;
+ gchar* _tmp2_ = NULL;
+ gchar* _tmp3_ = NULL;
+#line 1295 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp0_ = str;
+#line 1295 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp1_ = maxlen;
+#line 1295 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_);
+#line 1295 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ end = _tmp2_;
+#line 1296 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp3_ = end;
+#line 1296 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ if (_tmp3_ == NULL) {
+#line 15997 "Commands.c"
+ glong _tmp4_ = 0L;
+#line 1297 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp4_ = maxlen;
+#line 1297 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ result = _tmp4_;
+#line 1297 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ return result;
+#line 16005 "Commands.c"
+ } else {
+ gchar* _tmp5_ = NULL;
+ gchar* _tmp6_ = NULL;
+#line 1299 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp5_ = end;
+#line 1299 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp6_ = str;
+#line 1299 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ result = (glong) (_tmp5_ - _tmp6_);
+#line 1299 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ return result;
+#line 16017 "Commands.c"
+ }
+}
+
+
+static gchar* string_substring (const gchar* self, glong offset, glong len) {
+ gchar* result = NULL;
+ glong string_length = 0L;
+ gboolean _tmp0_ = FALSE;
+ glong _tmp1_ = 0L;
+ glong _tmp8_ = 0L;
+ glong _tmp14_ = 0L;
+ glong _tmp17_ = 0L;
+ glong _tmp18_ = 0L;
+ glong _tmp19_ = 0L;
+ glong _tmp20_ = 0L;
+ glong _tmp21_ = 0L;
+ gchar* _tmp22_ = NULL;
+#line 1306 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (self != NULL, NULL);
+#line 1308 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp1_ = offset;
+#line 1308 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ if (_tmp1_ >= ((glong) 0)) {
+#line 16041 "Commands.c"
+ glong _tmp2_ = 0L;
+#line 1308 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp2_ = len;
+#line 1308 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp0_ = _tmp2_ >= ((glong) 0);
+#line 16047 "Commands.c"
+ } else {
+#line 1308 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp0_ = FALSE;
+#line 16051 "Commands.c"
+ }
+#line 1308 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ if (_tmp0_) {
+#line 16055 "Commands.c"
+ glong _tmp3_ = 0L;
+ glong _tmp4_ = 0L;
+ glong _tmp5_ = 0L;
+#line 1310 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp3_ = offset;
+#line 1310 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp4_ = len;
+#line 1310 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp5_ = string_strnlen ((gchar*) self, _tmp3_ + _tmp4_);
+#line 1310 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ string_length = _tmp5_;
+#line 16067 "Commands.c"
+ } else {
+ gint _tmp6_ = 0;
+ gint _tmp7_ = 0;
+#line 1312 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp6_ = strlen (self);
+#line 1312 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp7_ = _tmp6_;
+#line 1312 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ string_length = (glong) _tmp7_;
+#line 16077 "Commands.c"
+ }
+#line 1315 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp8_ = offset;
+#line 1315 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ if (_tmp8_ < ((glong) 0)) {
+#line 16083 "Commands.c"
+ glong _tmp9_ = 0L;
+ glong _tmp10_ = 0L;
+ glong _tmp11_ = 0L;
+#line 1316 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp9_ = string_length;
+#line 1316 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp10_ = offset;
+#line 1316 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ offset = _tmp9_ + _tmp10_;
+#line 1317 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp11_ = offset;
+#line 1317 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (_tmp11_ >= ((glong) 0), NULL);
+#line 16097 "Commands.c"
+ } else {
+ glong _tmp12_ = 0L;
+ glong _tmp13_ = 0L;
+#line 1319 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp12_ = offset;
+#line 1319 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp13_ = string_length;
+#line 1319 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (_tmp12_ <= _tmp13_, NULL);
+#line 16107 "Commands.c"
+ }
+#line 1321 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp14_ = len;
+#line 1321 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ if (_tmp14_ < ((glong) 0)) {
+#line 16113 "Commands.c"
+ glong _tmp15_ = 0L;
+ glong _tmp16_ = 0L;
+#line 1322 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp15_ = string_length;
+#line 1322 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp16_ = offset;
+#line 1322 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ len = _tmp15_ - _tmp16_;
+#line 16122 "Commands.c"
+ }
+#line 1324 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp17_ = offset;
+#line 1324 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp18_ = len;
+#line 1324 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp19_ = string_length;
+#line 1324 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ g_return_val_if_fail ((_tmp17_ + _tmp18_) <= _tmp19_, NULL);
+#line 1325 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp20_ = offset;
+#line 1325 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp21_ = len;
+#line 1325 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ _tmp22_ = g_strndup (((gchar*) self) + _tmp20_, (gsize) _tmp21_);
+#line 1325 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ result = _tmp22_;
+#line 1325 "/usr/share/vala-0.32/vapi/glib-2.0.vapi"
+ return result;
+#line 16142 "Commands.c"
+}
+
+
+static void reparent_tag_command_restore_before_state (ReparentTagCommand* self) {
+ GeeList* _tmp0_ = NULL;
+ GeeMap* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp10_ = NULL;
+ const gchar* _tmp11_ = NULL;
+ gchar* unwind_target = NULL;
+ gchar* _tmp14_ = NULL;
+ const gchar* _tmp93_ = NULL;
+#line 1863 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 1864 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->src_before_state;
+#line 1864 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ != NULL, "src_before_state != null");
+#line 1865 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->existing_dest_child_structure;
+#line 1865 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp1_ != NULL, "existing_dest_child_structure != null");
+#line 1868 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->to_path_parent_path;
+#line 1868 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ != NULL) {
+#line 16169 "Commands.c"
+ gchar* new_tpp = NULL;
+ const gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+ const gchar* _tmp5_ = NULL;
+ const gchar* _tmp6_ = NULL;
+ gchar* _tmp9_ = NULL;
+#line 1869 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->to_path_parent_path;
+#line 1869 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = hierarchical_tag_utilities_get_root_path_form (_tmp3_);
+#line 1869 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_tpp = _tmp4_;
+#line 1870 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = new_tpp;
+#line 1870 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp6_ != NULL) {
+#line 16186 "Commands.c"
+ const gchar* _tmp7_ = NULL;
+#line 1870 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = new_tpp;
+#line 1870 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp7_;
+#line 16192 "Commands.c"
+ } else {
+ const gchar* _tmp8_ = NULL;
+#line 1870 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = self->priv->to_path_parent_path;
+#line 1870 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp8_;
+#line 16199 "Commands.c"
+ }
+#line 1870 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = g_strdup (_tmp5_);
+#line 1870 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->to_path_parent_path);
+#line 1870 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_path_parent_path = _tmp9_;
+#line 1868 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (new_tpp);
+#line 16209 "Commands.c"
+ }
+#line 1873 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = self->priv->to_path_parent_path;
+#line 1873 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp11_ != NULL) {
+#line 16215 "Commands.c"
+ const gchar* _tmp12_ = NULL;
+#line 1873 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = self->priv->to_path_parent_path;
+#line 1873 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp12_;
+#line 16221 "Commands.c"
+ } else {
+ const gchar* _tmp13_ = NULL;
+#line 1873 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = self->priv->to_path;
+#line 1873 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp13_;
+#line 16228 "Commands.c"
+ }
+#line 1873 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = g_strdup (_tmp10_);
+#line 1873 "/home/jens/Source/shotwell/src/Commands.vala"
+ unwind_target = _tmp14_;
+#line 16234 "Commands.c"
+ {
+ GeeList* _t_list = NULL;
+ const gchar* _tmp15_ = NULL;
+ Tag* _tmp16_ = NULL;
+ Tag* _tmp17_ = NULL;
+ GeeList* _tmp18_ = NULL;
+ GeeList* _tmp19_ = NULL;
+ gint _t_size = 0;
+ GeeList* _tmp20_ = NULL;
+ gint _tmp21_ = 0;
+ gint _tmp22_ = 0;
+ gint _t_index = 0;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = unwind_target;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = tag_for_path (_tmp15_);
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _tmp16_;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = tag_get_hierarchical_children (_tmp17_);
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = _tmp18_;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp17_);
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_list = _tmp19_;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = _t_list;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = _tmp21_;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_size = _tmp22_;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_index = -1;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 16273 "Commands.c"
+ gint _tmp23_ = 0;
+ gint _tmp24_ = 0;
+ gint _tmp25_ = 0;
+ Tag* t = NULL;
+ GeeList* _tmp26_ = NULL;
+ gint _tmp27_ = 0;
+ gpointer _tmp28_ = NULL;
+ gchar* child_subpath = NULL;
+ Tag* _tmp29_ = NULL;
+ gchar* _tmp30_ = NULL;
+ gchar* _tmp31_ = NULL;
+ const gchar* _tmp32_ = NULL;
+ gchar* _tmp33_ = NULL;
+ gchar* _tmp34_ = NULL;
+ const gchar* _tmp35_ = NULL;
+ gboolean _tmp36_ = FALSE;
+ GeeMap* _tmp39_ = NULL;
+ const gchar* _tmp40_ = NULL;
+ gboolean _tmp41_ = FALSE;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _t_index;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_index = _tmp23_ + 1;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _t_index;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = _t_size;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp24_ < _tmp25_)) {
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 16305 "Commands.c"
+ }
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _t_list;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = _t_index;
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = gee_list_get (_tmp26_, _tmp27_);
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ t = (Tag*) _tmp28_;
+#line 1875 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = t;
+#line 1875 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = tag_get_path (_tmp29_);
+#line 1875 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = _tmp30_;
+#line 1875 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = unwind_target;
+#line 1875 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = string_replace (_tmp31_, _tmp32_, "");
+#line 1875 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = _tmp33_;
+#line 1875 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp31_);
+#line 1875 "/home/jens/Source/shotwell/src/Commands.vala"
+ child_subpath = _tmp34_;
+#line 1876 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = child_subpath;
+#line 1876 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = g_str_has_prefix (_tmp35_, TAG_PATH_SEPARATOR_STRING);
+#line 1876 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp36_) {
+#line 16337 "Commands.c"
+ const gchar* _tmp37_ = NULL;
+ gchar* _tmp38_ = NULL;
+#line 1877 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = child_subpath;
+#line 1877 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = string_substring (_tmp37_, (glong) 1, (glong) -1);
+#line 1877 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (child_subpath);
+#line 1877 "/home/jens/Source/shotwell/src/Commands.vala"
+ child_subpath = _tmp38_;
+#line 16348 "Commands.c"
+ }
+#line 1879 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = self->priv->existing_dest_child_structure;
+#line 1879 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = child_subpath;
+#line 1879 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = gee_map_has_key (_tmp39_, _tmp40_);
+#line 1879 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp41_) {
+#line 16358 "Commands.c"
+ TagSourceCollection* _tmp42_ = NULL;
+ TagSourceCollection* _tmp43_ = NULL;
+ Tag* _tmp44_ = NULL;
+ Marker* _tmp45_ = NULL;
+ Marker* _tmp46_ = NULL;
+#line 1880 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = tag_global;
+#line 1880 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = tag_global;
+#line 1880 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = t;
+#line 1880 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = data_collection_mark (G_TYPE_CHECK_INSTANCE_CAST (_tmp43_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, TYPE_DATA_OBJECT, DataObject));
+#line 1880 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp46_ = _tmp45_;
+#line 1880 "/home/jens/Source/shotwell/src/Commands.vala"
+ source_collection_destroy_marked (G_TYPE_CHECK_INSTANCE_CAST (_tmp42_, TYPE_SOURCE_COLLECTION, SourceCollection), _tmp46_, TRUE, NULL, NULL, NULL);
+#line 1880 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp46_);
+#line 16378 "Commands.c"
+ } else {
+ GeeSet* starting_sources = NULL;
+ GeeHashSet* _tmp47_ = NULL;
+ GeeSet* _tmp48_ = NULL;
+ Tag* _tmp49_ = NULL;
+ GeeCollection* _tmp50_ = NULL;
+ GeeCollection* _tmp51_ = NULL;
+#line 1882 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp47_ = gee_hash_set_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1882 "/home/jens/Source/shotwell/src/Commands.vala"
+ starting_sources = G_TYPE_CHECK_INSTANCE_CAST (_tmp47_, GEE_TYPE_SET, GeeSet);
+#line 1883 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp48_ = starting_sources;
+#line 1883 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp49_ = t;
+#line 1883 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp50_ = tag_get_sources (_tmp49_);
+#line 1883 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp51_ = _tmp50_;
+#line 1883 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp48_, GEE_TYPE_COLLECTION, GeeCollection), _tmp51_);
+#line 1883 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp51_);
+#line 16402 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeSet* _tmp52_ = NULL;
+ GeeIterator* _tmp53_ = NULL;
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp52_ = starting_sources;
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp53_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp53_;
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 16415 "Commands.c"
+ GeeIterator* _tmp54_ = NULL;
+ gboolean _tmp55_ = FALSE;
+ MediaSource* source = NULL;
+ GeeIterator* _tmp56_ = NULL;
+ gpointer _tmp57_ = NULL;
+ GeeMap* _tmp58_ = NULL;
+ const gchar* _tmp59_ = NULL;
+ gpointer _tmp60_ = NULL;
+ GeeSet* _tmp61_ = NULL;
+ MediaSource* _tmp62_ = NULL;
+ gboolean _tmp63_ = FALSE;
+ gboolean _tmp64_ = FALSE;
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp54_ = _source_it;
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp55_ = gee_iterator_next (_tmp54_);
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp55_) {
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 16436 "Commands.c"
+ }
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp56_ = _source_it;
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp57_ = gee_iterator_get (_tmp56_);
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (MediaSource*) _tmp57_;
+#line 1885 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp58_ = self->priv->existing_dest_child_structure;
+#line 1885 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp59_ = child_subpath;
+#line 1885 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp60_ = gee_map_get (_tmp58_, _tmp59_);
+#line 1885 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp61_ = (GeeSet*) _tmp60_;
+#line 1885 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp62_ = source;
+#line 1885 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp63_ = gee_collection_contains (G_TYPE_CHECK_INSTANCE_CAST (_tmp61_, GEE_TYPE_COLLECTION, GeeCollection), _tmp62_);
+#line 1885 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp64_ = !_tmp63_;
+#line 1885 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp61_);
+#line 1885 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp64_) {
+#line 16462 "Commands.c"
+ Tag* _tmp65_ = NULL;
+ MediaSource* _tmp66_ = NULL;
+ GeeList* _tmp67_ = NULL;
+ GeeList* _tmp68_ = NULL;
+#line 1886 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp65_ = t;
+#line 1886 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp66_ = source;
+#line 1886 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp67_ = tag_detach (_tmp65_, _tmp66_);
+#line 1886 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp68_ = _tmp67_;
+#line 1886 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp68_);
+#line 16477 "Commands.c"
+ }
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 16481 "Commands.c"
+ }
+#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 16485 "Commands.c"
+ }
+#line 1879 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (starting_sources);
+#line 16489 "Commands.c"
+ }
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (child_subpath);
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (t);
+#line 16495 "Commands.c"
+ }
+#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_t_list);
+#line 16499 "Commands.c"
+ }
+ {
+ gint i = 0;
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = 0;
+#line 16505 "Commands.c"
+ {
+ gboolean _tmp69_ = FALSE;
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp69_ = TRUE;
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 16512 "Commands.c"
+ gint _tmp71_ = 0;
+ GeeList* _tmp72_ = NULL;
+ gint _tmp73_ = 0;
+ gint _tmp74_ = 0;
+ GeeList* _tmp75_ = NULL;
+ gint _tmp76_ = 0;
+ gpointer _tmp77_ = NULL;
+ SourceProxy* _tmp78_ = NULL;
+ DataSource* _tmp79_ = NULL;
+ DataSource* _tmp80_ = NULL;
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp69_) {
+#line 16525 "Commands.c"
+ gint _tmp70_ = 0;
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp70_ = i;
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp70_ + 1;
+#line 16531 "Commands.c"
+ }
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp69_ = FALSE;
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp71_ = i;
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp72_ = self->priv->src_before_state;
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp73_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp72_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp74_ = _tmp73_;
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp71_ < _tmp74_)) {
+#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 16547 "Commands.c"
+ }
+#line 1891 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp75_ = self->priv->src_before_state;
+#line 1891 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp76_ = i;
+#line 1891 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp77_ = gee_list_get (_tmp75_, _tmp76_);
+#line 1891 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp78_ = (SourceProxy*) _tmp77_;
+#line 1891 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp79_ = source_proxy_get_source (_tmp78_);
+#line 1891 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp80_ = _tmp79_;
+#line 1891 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp80_);
+#line 1891 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp78_);
+#line 16565 "Commands.c"
+ }
+ }
+ }
+ {
+ gint i = 0;
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = 0;
+#line 16573 "Commands.c"
+ {
+ gboolean _tmp81_ = FALSE;
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp81_ = TRUE;
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 16580 "Commands.c"
+ gint _tmp83_ = 0;
+ GeeList* _tmp84_ = NULL;
+ gint _tmp85_ = 0;
+ gint _tmp86_ = 0;
+ GeeList* _tmp87_ = NULL;
+ gint _tmp88_ = 0;
+ gpointer _tmp89_ = NULL;
+ SourceProxy* _tmp90_ = NULL;
+ DataSource* _tmp91_ = NULL;
+ DataSource* _tmp92_ = NULL;
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp81_) {
+#line 16593 "Commands.c"
+ gint _tmp82_ = 0;
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp82_ = i;
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp82_ + 1;
+#line 16599 "Commands.c"
+ }
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp81_ = FALSE;
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp83_ = i;
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp84_ = self->priv->dest_before_state;
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp85_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp84_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp86_ = _tmp85_;
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp83_ < _tmp86_)) {
+#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 16615 "Commands.c"
+ }
+#line 1894 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp87_ = self->priv->dest_before_state;
+#line 1894 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp88_ = i;
+#line 1894 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp89_ = gee_list_get (_tmp87_, _tmp88_);
+#line 1894 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp90_ = (SourceProxy*) _tmp89_;
+#line 1894 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp91_ = source_proxy_get_source (_tmp90_);
+#line 1894 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp92_ = _tmp91_;
+#line 1894 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp92_);
+#line 1894 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp90_);
+#line 16633 "Commands.c"
+ }
+ }
+ }
+#line 1896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp93_ = self->priv->to_path_parent_path;
+#line 1896 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp93_ != NULL) {
+#line 16641 "Commands.c"
+ gchar* new_path = NULL;
+ const gchar* _tmp94_ = NULL;
+ gchar* _tmp95_ = NULL;
+ const gchar* _tmp96_ = NULL;
+ const gchar* _tmp97_ = NULL;
+ gchar* path = NULL;
+ gchar* _tmp100_ = NULL;
+ TagSourceCollection* _tmp101_ = NULL;
+ const gchar* _tmp102_ = NULL;
+ gboolean _tmp103_ = FALSE;
+ Tag* t = NULL;
+ const gchar* _tmp104_ = NULL;
+ Tag* _tmp105_ = NULL;
+ GeeList* kids = NULL;
+ Tag* _tmp106_ = NULL;
+ GeeList* _tmp107_ = NULL;
+ const gchar* _tmp125_ = NULL;
+ GeeMap* _tmp126_ = NULL;
+#line 1897 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp94_ = self->priv->to_path_parent_path;
+#line 1897 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp95_ = hierarchical_tag_utilities_get_root_path_form (_tmp94_);
+#line 1897 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_path = _tmp95_;
+#line 1898 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp97_ = new_path;
+#line 1898 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp97_ != NULL) {
+#line 16670 "Commands.c"
+ const gchar* _tmp98_ = NULL;
+#line 1898 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp98_ = new_path;
+#line 1898 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp96_ = _tmp98_;
+#line 16676 "Commands.c"
+ } else {
+ const gchar* _tmp99_ = NULL;
+#line 1898 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp99_ = self->priv->to_path_parent_path;
+#line 1898 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp96_ = _tmp99_;
+#line 16683 "Commands.c"
+ }
+#line 1898 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp100_ = g_strdup (_tmp96_);
+#line 1898 "/home/jens/Source/shotwell/src/Commands.vala"
+ path = _tmp100_;
+#line 1900 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp101_ = tag_global;
+#line 1900 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp102_ = path;
+#line 1900 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp103_ = tag_source_collection_exists (_tmp101_, _tmp102_, FALSE);
+#line 1900 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp103_, "Tag.global.exists(path)");
+#line 1902 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp104_ = path;
+#line 1902 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp105_ = tag_for_path (_tmp104_);
+#line 1902 "/home/jens/Source/shotwell/src/Commands.vala"
+ t = _tmp105_;
+#line 1904 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp106_ = t;
+#line 1904 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp107_ = tag_get_hierarchical_children (_tmp106_);
+#line 1904 "/home/jens/Source/shotwell/src/Commands.vala"
+ kids = _tmp107_;
+#line 16709 "Commands.c"
+ {
+ GeeList* _kidtag_list = NULL;
+ GeeList* _tmp108_ = NULL;
+ GeeList* _tmp109_ = NULL;
+ gint _kidtag_size = 0;
+ GeeList* _tmp110_ = NULL;
+ gint _tmp111_ = 0;
+ gint _tmp112_ = 0;
+ gint _kidtag_index = 0;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp108_ = kids;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp109_ = _g_object_ref0 (_tmp108_);
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _kidtag_list = _tmp109_;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp110_ = _kidtag_list;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp111_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp110_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp112_ = _tmp111_;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _kidtag_size = _tmp112_;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _kidtag_index = -1;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 16737 "Commands.c"
+ gint _tmp113_ = 0;
+ gint _tmp114_ = 0;
+ gint _tmp115_ = 0;
+ Tag* kidtag = NULL;
+ GeeList* _tmp116_ = NULL;
+ gint _tmp117_ = 0;
+ gpointer _tmp118_ = NULL;
+ Tag* _tmp119_ = NULL;
+ Tag* _tmp120_ = NULL;
+ GeeCollection* _tmp121_ = NULL;
+ GeeCollection* _tmp122_ = NULL;
+ GeeMultiMap* _tmp123_ = NULL;
+ GeeMultiMap* _tmp124_ = NULL;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp113_ = _kidtag_index;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _kidtag_index = _tmp113_ + 1;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp114_ = _kidtag_index;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp115_ = _kidtag_size;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp114_ < _tmp115_)) {
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 16763 "Commands.c"
+ }
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp116_ = _kidtag_list;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp117_ = _kidtag_index;
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp118_ = gee_list_get (_tmp116_, _tmp117_);
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ kidtag = (Tag*) _tmp118_;
+#line 1906 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp119_ = kidtag;
+#line 1906 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp120_ = kidtag;
+#line 1906 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp121_ = tag_get_sources (_tmp120_);
+#line 1906 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp122_ = _tmp121_;
+#line 1906 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp123_ = tag_detach_many (_tmp119_, _tmp122_);
+#line 1906 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp124_ = _tmp123_;
+#line 1906 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp124_);
+#line 1906 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp122_);
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (kidtag);
+#line 16791 "Commands.c"
+ }
+#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_kidtag_list);
+#line 16795 "Commands.c"
+ }
+#line 1908 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp125_ = path;
+#line 1908 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp126_ = self->priv->existing_dest_child_structure;
+#line 1908 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_restore_child_attachments_at (self, _tmp125_, _tmp126_);
+#line 1896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (kids);
+#line 1896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (t);
+#line 1896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (path);
+#line 1896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (new_path);
+#line 16811 "Commands.c"
+ } else {
+ GeeSet* _tmp127_ = NULL;
+ const gchar* _tmp128_ = NULL;
+ Tag* _tmp129_ = NULL;
+ Tag* _tmp130_ = NULL;
+ const gchar* _tmp131_ = NULL;
+ Tag* _tmp132_ = NULL;
+ Tag* _tmp133_ = NULL;
+ GeeCollection* _tmp134_ = NULL;
+ GeeCollection* _tmp135_ = NULL;
+ GeeMultiMap* _tmp136_ = NULL;
+ GeeMultiMap* _tmp137_ = NULL;
+ const gchar* _tmp138_ = NULL;
+ Tag* _tmp139_ = NULL;
+ Tag* _tmp140_ = NULL;
+ GeeSet* _tmp141_ = NULL;
+ GeeList* kids = NULL;
+ const gchar* _tmp142_ = NULL;
+ Tag* _tmp143_ = NULL;
+ Tag* _tmp144_ = NULL;
+ GeeList* _tmp145_ = NULL;
+ GeeList* _tmp146_ = NULL;
+ const gchar* _tmp164_ = NULL;
+ GeeMap* _tmp165_ = NULL;
+#line 1910 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp127_ = self->priv->existing_dest_membership;
+#line 1910 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp127_ != NULL, "existing_dest_membership != null");
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp128_ = self->priv->to_path;
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp129_ = tag_for_path (_tmp128_);
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp130_ = _tmp129_;
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp131_ = self->priv->to_path;
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp132_ = tag_for_path (_tmp131_);
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp133_ = _tmp132_;
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp134_ = tag_get_sources (_tmp133_);
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp135_ = _tmp134_;
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp136_ = tag_detach_many (_tmp130_, _tmp135_);
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp137_ = _tmp136_;
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp137_);
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp135_);
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp133_);
+#line 1911 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp130_);
+#line 1912 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp138_ = self->priv->to_path;
+#line 1912 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp139_ = tag_for_path (_tmp138_);
+#line 1912 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp140_ = _tmp139_;
+#line 1912 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp141_ = self->priv->existing_dest_membership;
+#line 1912 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach_many (_tmp140_, G_TYPE_CHECK_INSTANCE_CAST (_tmp141_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1912 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp140_);
+#line 1914 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp142_ = self->priv->to_path;
+#line 1914 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp143_ = tag_for_path (_tmp142_);
+#line 1914 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp144_ = _tmp143_;
+#line 1914 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp145_ = tag_get_hierarchical_children (_tmp144_);
+#line 1914 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp146_ = _tmp145_;
+#line 1914 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp144_);
+#line 1914 "/home/jens/Source/shotwell/src/Commands.vala"
+ kids = _tmp146_;
+#line 16894 "Commands.c"
+ {
+ GeeList* _kidtag_list = NULL;
+ GeeList* _tmp147_ = NULL;
+ GeeList* _tmp148_ = NULL;
+ gint _kidtag_size = 0;
+ GeeList* _tmp149_ = NULL;
+ gint _tmp150_ = 0;
+ gint _tmp151_ = 0;
+ gint _kidtag_index = 0;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp147_ = kids;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp148_ = _g_object_ref0 (_tmp147_);
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _kidtag_list = _tmp148_;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp149_ = _kidtag_list;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp150_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp149_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp151_ = _tmp150_;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _kidtag_size = _tmp151_;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _kidtag_index = -1;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 16922 "Commands.c"
+ gint _tmp152_ = 0;
+ gint _tmp153_ = 0;
+ gint _tmp154_ = 0;
+ Tag* kidtag = NULL;
+ GeeList* _tmp155_ = NULL;
+ gint _tmp156_ = 0;
+ gpointer _tmp157_ = NULL;
+ Tag* _tmp158_ = NULL;
+ Tag* _tmp159_ = NULL;
+ GeeCollection* _tmp160_ = NULL;
+ GeeCollection* _tmp161_ = NULL;
+ GeeMultiMap* _tmp162_ = NULL;
+ GeeMultiMap* _tmp163_ = NULL;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp152_ = _kidtag_index;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _kidtag_index = _tmp152_ + 1;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp153_ = _kidtag_index;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp154_ = _kidtag_size;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp153_ < _tmp154_)) {
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 16948 "Commands.c"
+ }
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp155_ = _kidtag_list;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp156_ = _kidtag_index;
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp157_ = gee_list_get (_tmp155_, _tmp156_);
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ kidtag = (Tag*) _tmp157_;
+#line 1916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp158_ = kidtag;
+#line 1916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp159_ = kidtag;
+#line 1916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp160_ = tag_get_sources (_tmp159_);
+#line 1916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp161_ = _tmp160_;
+#line 1916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp162_ = tag_detach_many (_tmp158_, _tmp161_);
+#line 1916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp163_ = _tmp162_;
+#line 1916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp163_);
+#line 1916 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp161_);
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (kidtag);
+#line 16976 "Commands.c"
+ }
+#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_kidtag_list);
+#line 16980 "Commands.c"
+ }
+#line 1918 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp164_ = self->priv->to_path;
+#line 1918 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp165_ = self->priv->existing_dest_child_structure;
+#line 1918 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_restore_child_attachments_at (self, _tmp164_, _tmp165_);
+#line 1896 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (kids);
+#line 16990 "Commands.c"
+ }
+#line 1863 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (unwind_target);
+#line 16994 "Commands.c"
+}
+
+
+static void reparent_tag_command_save_after_state (ReparentTagCommand* self) {
+ GeeList* _tmp0_ = NULL;
+ GeeArrayList* _tmp1_ = NULL;
+ TagSourceCollection* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ gboolean _tmp4_ = FALSE;
+ Tag* to_tag = NULL;
+ const gchar* _tmp5_ = NULL;
+ Tag* _tmp6_ = NULL;
+ GeeList* _tmp7_ = NULL;
+ Tag* _tmp8_ = NULL;
+ SourceProxy* _tmp9_ = NULL;
+ SourceProxy* _tmp10_ = NULL;
+ GeeList* to_children = NULL;
+ Tag* _tmp11_ = NULL;
+ GeeList* _tmp12_ = NULL;
+#line 1922 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 1923 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->after_state;
+#line 1923 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ == NULL, "after_state == null");
+#line 1925 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_array_list_new (TYPE_SOURCE_PROXY, (GBoxedCopyFunc) source_proxy_ref, source_proxy_unref, NULL, NULL, NULL);
+#line 1925 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->after_state);
+#line 1925 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->after_state = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_LIST, GeeList);
+#line 1928 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag_global;
+#line 1928 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->to_path;
+#line 1928 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = tag_source_collection_exists (_tmp2_, _tmp3_, FALSE);
+#line 1928 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp4_, "Tag.global.exists(to_path)");
+#line 1929 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->to_path;
+#line 1929 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = tag_for_path (_tmp5_);
+#line 1929 "/home/jens/Source/shotwell/src/Commands.vala"
+ to_tag = _tmp6_;
+#line 1930 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->after_state;
+#line 1930 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = to_tag;
+#line 1930 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_PROXYABLE, Proxyable));
+#line 1930 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_;
+#line 1930 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_COLLECTION, GeeCollection), _tmp10_);
+#line 1930 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp10_);
+#line 1933 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = to_tag;
+#line 1933 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = tag_get_hierarchical_children (_tmp11_);
+#line 1933 "/home/jens/Source/shotwell/src/Commands.vala"
+ to_children = _tmp12_;
+#line 17058 "Commands.c"
+ {
+ gint i = 0;
+ GeeList* _tmp13_ = NULL;
+ gint _tmp14_ = 0;
+ gint _tmp15_ = 0;
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = to_children;
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _tmp14_;
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp15_ - 1;
+#line 17072 "Commands.c"
+ {
+ gboolean _tmp16_ = FALSE;
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = TRUE;
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 17079 "Commands.c"
+ gint _tmp18_ = 0;
+ GeeList* _tmp19_ = NULL;
+ GeeList* _tmp20_ = NULL;
+ gint _tmp21_ = 0;
+ gpointer _tmp22_ = NULL;
+ Tag* _tmp23_ = NULL;
+ SourceProxy* _tmp24_ = NULL;
+ SourceProxy* _tmp25_ = NULL;
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp16_) {
+#line 17090 "Commands.c"
+ gint _tmp17_ = 0;
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = i;
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp17_ - 1;
+#line 17096 "Commands.c"
+ }
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = FALSE;
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = i;
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp18_ >= 0)) {
+#line 1934 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 17106 "Commands.c"
+ }
+#line 1935 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = self->priv->after_state;
+#line 1935 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = to_children;
+#line 1935 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = i;
+#line 1935 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = gee_list_get (_tmp20_, _tmp21_);
+#line 1935 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = (Tag*) _tmp22_;
+#line 1935 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, TYPE_PROXYABLE, Proxyable));
+#line 1935 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = _tmp24_;
+#line 1935 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, GEE_TYPE_COLLECTION, GeeCollection), _tmp25_);
+#line 1935 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp25_);
+#line 1935 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp23_);
+#line 17128 "Commands.c"
+ }
+ }
+ }
+#line 1922 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (to_children);
+#line 1922 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (to_tag);
+#line 17136 "Commands.c"
+}
+
+
+static void reparent_tag_command_restore_after_state (ReparentTagCommand* self) {
+ GeeList* _tmp0_ = NULL;
+#line 1938 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 1939 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->after_state;
+#line 1939 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ != NULL, "after_state != null");
+#line 17148 "Commands.c"
+ {
+ gint i = 0;
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = 0;
+#line 17153 "Commands.c"
+ {
+ gboolean _tmp1_ = FALSE;
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = TRUE;
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 17160 "Commands.c"
+ gint _tmp3_ = 0;
+ GeeList* _tmp4_ = NULL;
+ gint _tmp5_ = 0;
+ gint _tmp6_ = 0;
+ GeeList* _tmp7_ = NULL;
+ gint _tmp8_ = 0;
+ gpointer _tmp9_ = NULL;
+ SourceProxy* _tmp10_ = NULL;
+ DataSource* _tmp11_ = NULL;
+ DataSource* _tmp12_ = NULL;
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp1_) {
+#line 17173 "Commands.c"
+ gint _tmp2_ = 0;
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = i;
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp2_ + 1;
+#line 17179 "Commands.c"
+ }
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = FALSE;
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = i;
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->after_state;
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp3_ < _tmp6_)) {
+#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 17195 "Commands.c"
+ }
+#line 1942 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->after_state;
+#line 1942 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = i;
+#line 1942 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_list_get (_tmp7_, _tmp8_);
+#line 1942 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = (SourceProxy*) _tmp9_;
+#line 1942 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = source_proxy_get_source (_tmp10_);
+#line 1942 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = _tmp11_;
+#line 1942 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp12_);
+#line 1942 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (_tmp10_);
+#line 17213 "Commands.c"
+ }
+ }
+ }
+}
+
+
+static void reparent_tag_command_prepare_parent (ReparentTagCommand* self, const gchar* path) {
+ Tag* new_parent = NULL;
+ const gchar* _tmp0_ = NULL;
+ gboolean _tmp1_ = FALSE;
+ Tag* _tmp27_ = NULL;
+#line 1945 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 1945 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (path != NULL);
+#line 1947 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_parent = NULL;
+#line 1948 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = path;
+#line 1948 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = g_str_has_prefix (_tmp0_, TAG_PATH_SEPARATOR_STRING);
+#line 1948 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_) {
+#line 17237 "Commands.c"
+ GeeList* parent_paths = NULL;
+ const gchar* _tmp2_ = NULL;
+ GeeList* _tmp3_ = NULL;
+ GeeList* _tmp4_ = NULL;
+ gint _tmp5_ = 0;
+ gint _tmp6_ = 0;
+#line 1949 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = path;
+#line 1949 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = hierarchical_tag_utilities_enumerate_parent_paths (_tmp2_);
+#line 1949 "/home/jens/Source/shotwell/src/Commands.vala"
+ parent_paths = _tmp3_;
+#line 1950 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = parent_paths;
+#line 1950 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1950 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 1950 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp6_ > 0) {
+#line 17258 "Commands.c"
+ gchar* immediate_parent_path = NULL;
+ GeeList* _tmp7_ = NULL;
+ GeeList* _tmp8_ = NULL;
+ gint _tmp9_ = 0;
+ gint _tmp10_ = 0;
+ gpointer _tmp11_ = NULL;
+ TagSourceCollection* _tmp12_ = NULL;
+ const gchar* _tmp13_ = NULL;
+ gboolean _tmp14_ = FALSE;
+#line 1951 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = parent_paths;
+#line 1951 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = parent_paths;
+#line 1951 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 1951 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_;
+#line 1951 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = gee_list_get (_tmp7_, _tmp10_ - 1);
+#line 1951 "/home/jens/Source/shotwell/src/Commands.vala"
+ immediate_parent_path = (gchar*) _tmp11_;
+#line 1952 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = tag_global;
+#line 1952 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = immediate_parent_path;
+#line 1952 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = tag_source_collection_exists (_tmp12_, _tmp13_, FALSE);
+#line 1952 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp14_) {
+#line 17288 "Commands.c"
+ const gchar* _tmp15_ = NULL;
+ Tag* _tmp16_ = NULL;
+#line 1953 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = immediate_parent_path;
+#line 1953 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = tag_for_path (_tmp15_);
+#line 1953 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (new_parent);
+#line 1953 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_parent = _tmp16_;
+#line 17299 "Commands.c"
+ } else {
+ TagSourceCollection* _tmp17_ = NULL;
+ const gchar* _tmp18_ = NULL;
+ gchar* _tmp19_ = NULL;
+ gchar* _tmp20_ = NULL;
+ gboolean _tmp21_ = FALSE;
+ gboolean _tmp22_ = FALSE;
+#line 1954 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = tag_global;
+#line 1954 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = immediate_parent_path;
+#line 1954 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = string_substring (_tmp18_, (glong) 1, (glong) -1);
+#line 1954 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = _tmp19_;
+#line 1954 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = tag_source_collection_exists (_tmp17_, _tmp20_, FALSE);
+#line 1954 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = _tmp21_;
+#line 1954 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp20_);
+#line 1954 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp22_) {
+#line 17323 "Commands.c"
+ const gchar* _tmp23_ = NULL;
+ gchar* _tmp24_ = NULL;
+ gchar* _tmp25_ = NULL;
+ Tag* _tmp26_ = NULL;
+#line 1955 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = immediate_parent_path;
+#line 1955 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = string_substring (_tmp23_, (glong) 1, (glong) -1);
+#line 1955 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = _tmp24_;
+#line 1955 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = tag_for_path (_tmp25_);
+#line 1955 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (new_parent);
+#line 1955 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_parent = _tmp26_;
+#line 1955 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp25_);
+#line 17342 "Commands.c"
+ } else {
+#line 1957 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_assert_not_reached ();
+#line 17346 "Commands.c"
+ }
+ }
+#line 1950 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (immediate_parent_path);
+#line 17351 "Commands.c"
+ }
+#line 1948 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (parent_paths);
+#line 17355 "Commands.c"
+ }
+#line 1960 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = new_parent;
+#line 1960 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp27_ != NULL) {
+#line 17361 "Commands.c"
+ Tag* _tmp28_ = NULL;
+#line 1961 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = new_parent;
+#line 1961 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_promote (_tmp28_);
+#line 17367 "Commands.c"
+ }
+#line 1945 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (new_parent);
+#line 17371 "Commands.c"
+}
+
+
+static void reparent_tag_command_do_source_parent_detachments (ReparentTagCommand* self) {
+ TagSourceCollection* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gboolean _tmp2_ = FALSE;
+ Tag* from_tag = NULL;
+ const gchar* _tmp3_ = NULL;
+ Tag* _tmp4_ = NULL;
+ GeeMap* _tmp5_ = NULL;
+#line 1964 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 1965 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = tag_global;
+#line 1965 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->from_path;
+#line 1965 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag_source_collection_exists (_tmp0_, _tmp1_, FALSE);
+#line 1965 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp2_, "Tag.global.exists(from_path)");
+#line 1966 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->from_path;
+#line 1966 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = tag_for_path (_tmp3_);
+#line 1966 "/home/jens/Source/shotwell/src/Commands.vala"
+ from_tag = _tmp4_;
+#line 1969 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->src_parent_detachments;
+#line 1969 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp5_ == NULL) {
+#line 17403 "Commands.c"
+ GeeHashMap* _tmp6_ = NULL;
+#line 1970 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, GEE_TYPE_SET, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1970 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->src_parent_detachments);
+#line 1970 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->src_parent_detachments = G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_MAP, GeeMap);
+#line 17411 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ Tag* _tmp7_ = NULL;
+ GeeCollection* _tmp8_ = NULL;
+ GeeCollection* _tmp9_ = NULL;
+ GeeIterator* _tmp10_ = NULL;
+ GeeIterator* _tmp11_ = NULL;
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = from_tag;
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = tag_get_sources (_tmp7_);
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _tmp8_;
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _tmp10_;
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp9_);
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp11_;
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 17435 "Commands.c"
+ GeeIterator* _tmp12_ = NULL;
+ gboolean _tmp13_ = FALSE;
+ MediaSource* source = NULL;
+ GeeIterator* _tmp14_ = NULL;
+ gpointer _tmp15_ = NULL;
+ Tag* current_parent = NULL;
+ Tag* _tmp16_ = NULL;
+ Tag* _tmp17_ = NULL;
+ gint running_attach_count = 0;
+ Tag* _tmp18_ = NULL;
+ MediaSource* _tmp19_ = NULL;
+ gint _tmp20_ = 0;
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = _source_it;
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = gee_iterator_next (_tmp12_);
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp13_) {
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 17456 "Commands.c"
+ }
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _source_it;
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_iterator_get (_tmp14_);
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (MediaSource*) _tmp15_;
+#line 1972 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = from_tag;
+#line 1972 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = tag_get_hierarchical_parent (_tmp16_);
+#line 1972 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_parent = _tmp17_;
+#line 1973 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = from_tag;
+#line 1973 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = source;
+#line 1973 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = tag_get_attachment_count (_tmp18_, _tmp19_);
+#line 1973 "/home/jens/Source/shotwell/src/Commands.vala"
+ running_attach_count = _tmp20_ + 1;
+#line 1974 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 17480 "Commands.c"
+ Tag* _tmp21_ = NULL;
+ gchar* current_parent_path = NULL;
+ Tag* _tmp22_ = NULL;
+ gchar* _tmp23_ = NULL;
+ GeeMap* _tmp24_ = NULL;
+ const gchar* _tmp25_ = NULL;
+ gboolean _tmp26_ = FALSE;
+ gint curr_parent_attach_count = 0;
+ Tag* _tmp31_ = NULL;
+ MediaSource* _tmp32_ = NULL;
+ gint _tmp33_ = 0;
+ gint _tmp34_ = 0;
+ gint _tmp35_ = 0;
+ gint _tmp36_ = 0;
+ gint _tmp37_ = 0;
+ gint _tmp43_ = 0;
+ Tag* _tmp44_ = NULL;
+ Tag* _tmp45_ = NULL;
+#line 1974 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = current_parent;
+#line 1974 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp21_ != NULL)) {
+#line 1974 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 17505 "Commands.c"
+ }
+#line 1975 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = current_parent;
+#line 1975 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = tag_get_path (_tmp22_);
+#line 1975 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_parent_path = _tmp23_;
+#line 1976 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = self->priv->src_parent_detachments;
+#line 1976 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = current_parent_path;
+#line 1976 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = gee_map_has_key (_tmp24_, _tmp25_);
+#line 1976 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp26_) {
+#line 17521 "Commands.c"
+ GeeMap* _tmp27_ = NULL;
+ const gchar* _tmp28_ = NULL;
+ GeeHashSet* _tmp29_ = NULL;
+ GeeHashSet* _tmp30_ = NULL;
+#line 1977 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = self->priv->src_parent_detachments;
+#line 1977 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = current_parent_path;
+#line 1977 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = gee_hash_set_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1977 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = _tmp29_;
+#line 1977 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_map_set (_tmp27_, _tmp28_, G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, GEE_TYPE_SET, GeeSet));
+#line 1977 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp30_);
+#line 17538 "Commands.c"
+ }
+#line 1979 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = current_parent;
+#line 1979 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = source;
+#line 1979 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = tag_get_attachment_count (_tmp31_, _tmp32_);
+#line 1979 "/home/jens/Source/shotwell/src/Commands.vala"
+ curr_parent_attach_count = _tmp33_;
+#line 1981 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = curr_parent_attach_count;
+#line 1981 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = running_attach_count;
+#line 1981 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp34_ >= _tmp35_, "curr_parent_attach_count >= running_attach_count");
+#line 1985 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = curr_parent_attach_count;
+#line 1985 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = running_attach_count;
+#line 1985 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp36_ == _tmp37_) {
+#line 17560 "Commands.c"
+ GeeMap* _tmp38_ = NULL;
+ const gchar* _tmp39_ = NULL;
+ gpointer _tmp40_ = NULL;
+ GeeSet* _tmp41_ = NULL;
+ MediaSource* _tmp42_ = NULL;
+#line 1986 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = self->priv->src_parent_detachments;
+#line 1986 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = current_parent_path;
+#line 1986 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = gee_map_get (_tmp38_, _tmp39_);
+#line 1986 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = (GeeSet*) _tmp40_;
+#line 1986 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = source;
+#line 1986 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp41_, GEE_TYPE_COLLECTION, GeeCollection), _tmp42_);
+#line 1986 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp41_);
+#line 17580 "Commands.c"
+ }
+#line 1988 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = running_attach_count;
+#line 1988 "/home/jens/Source/shotwell/src/Commands.vala"
+ running_attach_count = _tmp43_ + 1;
+#line 1989 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = current_parent;
+#line 1989 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = tag_get_hierarchical_parent (_tmp44_);
+#line 1989 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (current_parent);
+#line 1989 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_parent = _tmp45_;
+#line 1974 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (current_parent_path);
+#line 17596 "Commands.c"
+ }
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (current_parent);
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 17602 "Commands.c"
+ }
+#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 17606 "Commands.c"
+ }
+ }
+ {
+ GeeIterator* _p_it = NULL;
+ GeeMap* _tmp46_ = NULL;
+ GeeSet* _tmp47_ = NULL;
+ GeeSet* _tmp48_ = NULL;
+ GeeSet* _tmp49_ = NULL;
+ GeeIterator* _tmp50_ = NULL;
+ GeeIterator* _tmp51_ = NULL;
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp46_ = self->priv->src_parent_detachments;
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp47_ = gee_map_get_keys (_tmp46_);
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp48_ = _tmp47_;
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp49_ = _tmp48_;
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp50_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp49_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp51_ = _tmp50_;
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp49_);
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _p_it = _tmp51_;
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 17635 "Commands.c"
+ GeeIterator* _tmp52_ = NULL;
+ gboolean _tmp53_ = FALSE;
+ gchar* p = NULL;
+ GeeIterator* _tmp54_ = NULL;
+ gpointer _tmp55_ = NULL;
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp52_ = _p_it;
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp53_ = gee_iterator_next (_tmp52_);
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp53_) {
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 17649 "Commands.c"
+ }
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp54_ = _p_it;
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp55_ = gee_iterator_get (_tmp54_);
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ p = (gchar*) _tmp55_;
+#line 17657 "Commands.c"
+ {
+ GeeIterator* _s_it = NULL;
+ GeeMap* _tmp56_ = NULL;
+ const gchar* _tmp57_ = NULL;
+ gpointer _tmp58_ = NULL;
+ GeeSet* _tmp59_ = NULL;
+ GeeIterator* _tmp60_ = NULL;
+ GeeIterator* _tmp61_ = NULL;
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp56_ = self->priv->src_parent_detachments;
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp57_ = p;
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp58_ = gee_map_get (_tmp56_, _tmp57_);
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp59_ = (GeeSet*) _tmp58_;
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp60_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp61_ = _tmp60_;
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp59_);
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _s_it = _tmp61_;
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 17684 "Commands.c"
+ GeeIterator* _tmp62_ = NULL;
+ gboolean _tmp63_ = FALSE;
+ MediaSource* s = NULL;
+ GeeIterator* _tmp64_ = NULL;
+ gpointer _tmp65_ = NULL;
+ const gchar* _tmp66_ = NULL;
+ Tag* _tmp67_ = NULL;
+ Tag* _tmp68_ = NULL;
+ MediaSource* _tmp69_ = NULL;
+ GeeList* _tmp70_ = NULL;
+ GeeList* _tmp71_ = NULL;
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp62_ = _s_it;
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp63_ = gee_iterator_next (_tmp62_);
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp63_) {
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 17704 "Commands.c"
+ }
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp64_ = _s_it;
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp65_ = gee_iterator_get (_tmp64_);
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ s = (MediaSource*) _tmp65_;
+#line 1997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp66_ = p;
+#line 1997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp67_ = tag_for_path (_tmp66_);
+#line 1997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp68_ = _tmp67_;
+#line 1997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp69_ = s;
+#line 1997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp70_ = tag_detach (_tmp68_, _tmp69_);
+#line 1997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp71_ = _tmp70_;
+#line 1997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp71_);
+#line 1997 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp68_);
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (s);
+#line 17730 "Commands.c"
+ }
+#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_s_it);
+#line 17734 "Commands.c"
+ }
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (p);
+#line 17738 "Commands.c"
+ }
+#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_p_it);
+#line 17742 "Commands.c"
+ }
+#line 1964 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (from_tag);
+#line 17746 "Commands.c"
+}
+
+
+static void reparent_tag_command_do_source_parent_reattachments (ReparentTagCommand* self) {
+ GeeMap* _tmp0_ = NULL;
+#line 2000 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 2001 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->src_parent_detachments;
+#line 2001 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ != NULL, "src_parent_detachments != null");
+#line 17758 "Commands.c"
+ {
+ GeeIterator* _p_it = NULL;
+ GeeMap* _tmp1_ = NULL;
+ GeeSet* _tmp2_ = NULL;
+ GeeSet* _tmp3_ = NULL;
+ GeeSet* _tmp4_ = NULL;
+ GeeIterator* _tmp5_ = NULL;
+ GeeIterator* _tmp6_ = NULL;
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->src_parent_detachments;
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = gee_map_get_keys (_tmp1_);
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp4_);
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _p_it = _tmp6_;
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 17785 "Commands.c"
+ GeeIterator* _tmp7_ = NULL;
+ gboolean _tmp8_ = FALSE;
+ gchar* p = NULL;
+ GeeIterator* _tmp9_ = NULL;
+ gpointer _tmp10_ = NULL;
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _p_it;
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = gee_iterator_next (_tmp7_);
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp8_) {
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 17799 "Commands.c"
+ }
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _p_it;
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_iterator_get (_tmp9_);
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ p = (gchar*) _tmp10_;
+#line 17807 "Commands.c"
+ {
+ GeeIterator* _s_it = NULL;
+ GeeMap* _tmp11_ = NULL;
+ const gchar* _tmp12_ = NULL;
+ gpointer _tmp13_ = NULL;
+ GeeSet* _tmp14_ = NULL;
+ GeeIterator* _tmp15_ = NULL;
+ GeeIterator* _tmp16_ = NULL;
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = self->priv->src_parent_detachments;
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = p;
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = gee_map_get (_tmp11_, _tmp12_);
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = (GeeSet*) _tmp13_;
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _tmp15_;
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp14_);
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _s_it = _tmp16_;
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 17834 "Commands.c"
+ GeeIterator* _tmp17_ = NULL;
+ gboolean _tmp18_ = FALSE;
+ MediaSource* s = NULL;
+ GeeIterator* _tmp19_ = NULL;
+ gpointer _tmp20_ = NULL;
+ const gchar* _tmp21_ = NULL;
+ Tag* _tmp22_ = NULL;
+ Tag* _tmp23_ = NULL;
+ MediaSource* _tmp24_ = NULL;
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _s_it;
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = gee_iterator_next (_tmp17_);
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp18_) {
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 17852 "Commands.c"
+ }
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = _s_it;
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = gee_iterator_get (_tmp19_);
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ s = (MediaSource*) _tmp20_;
+#line 2005 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = p;
+#line 2005 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = tag_for_path (_tmp21_);
+#line 2005 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _tmp22_;
+#line 2005 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = s;
+#line 2005 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach (_tmp23_, _tmp24_);
+#line 2005 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp23_);
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (s);
+#line 17874 "Commands.c"
+ }
+#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_s_it);
+#line 17878 "Commands.c"
+ }
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (p);
+#line 17882 "Commands.c"
+ }
+#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_p_it);
+#line 17886 "Commands.c"
+ }
+}
+
+
+static void reparent_tag_command_do_destination_parent_detachments (ReparentTagCommand* self) {
+ GeeMap* _tmp0_ = NULL;
+#line 2008 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 2009 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->dest_parent_attachments;
+#line 2009 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ != NULL, "dest_parent_attachments != null");
+#line 17899 "Commands.c"
+ {
+ GeeIterator* _p_it = NULL;
+ GeeMap* _tmp1_ = NULL;
+ GeeSet* _tmp2_ = NULL;
+ GeeSet* _tmp3_ = NULL;
+ GeeSet* _tmp4_ = NULL;
+ GeeIterator* _tmp5_ = NULL;
+ GeeIterator* _tmp6_ = NULL;
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->dest_parent_attachments;
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = gee_map_get_keys (_tmp1_);
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp4_);
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _p_it = _tmp6_;
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 17926 "Commands.c"
+ GeeIterator* _tmp7_ = NULL;
+ gboolean _tmp8_ = FALSE;
+ gchar* p = NULL;
+ GeeIterator* _tmp9_ = NULL;
+ gpointer _tmp10_ = NULL;
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _p_it;
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = gee_iterator_next (_tmp7_);
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp8_) {
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 17940 "Commands.c"
+ }
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _p_it;
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_iterator_get (_tmp9_);
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ p = (gchar*) _tmp10_;
+#line 17948 "Commands.c"
+ {
+ GeeIterator* _s_it = NULL;
+ GeeMap* _tmp11_ = NULL;
+ const gchar* _tmp12_ = NULL;
+ gpointer _tmp13_ = NULL;
+ GeeSet* _tmp14_ = NULL;
+ GeeIterator* _tmp15_ = NULL;
+ GeeIterator* _tmp16_ = NULL;
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = self->priv->dest_parent_attachments;
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = p;
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = gee_map_get (_tmp11_, _tmp12_);
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = (GeeSet*) _tmp13_;
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _tmp15_;
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp14_);
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _s_it = _tmp16_;
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 17975 "Commands.c"
+ GeeIterator* _tmp17_ = NULL;
+ gboolean _tmp18_ = FALSE;
+ MediaSource* s = NULL;
+ GeeIterator* _tmp19_ = NULL;
+ gpointer _tmp20_ = NULL;
+ const gchar* _tmp21_ = NULL;
+ Tag* _tmp22_ = NULL;
+ Tag* _tmp23_ = NULL;
+ MediaSource* _tmp24_ = NULL;
+ GeeList* _tmp25_ = NULL;
+ GeeList* _tmp26_ = NULL;
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _s_it;
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = gee_iterator_next (_tmp17_);
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp18_) {
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 17995 "Commands.c"
+ }
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = _s_it;
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = gee_iterator_get (_tmp19_);
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ s = (MediaSource*) _tmp20_;
+#line 2013 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = p;
+#line 2013 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = tag_for_path (_tmp21_);
+#line 2013 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _tmp22_;
+#line 2013 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = s;
+#line 2013 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = tag_detach (_tmp23_, _tmp24_);
+#line 2013 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _tmp25_;
+#line 2013 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp26_);
+#line 2013 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp23_);
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (s);
+#line 18021 "Commands.c"
+ }
+#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_s_it);
+#line 18025 "Commands.c"
+ }
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (p);
+#line 18029 "Commands.c"
+ }
+#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_p_it);
+#line 18033 "Commands.c"
+ }
+}
+
+
+static void reparent_tag_command_do_destination_parent_reattachments (ReparentTagCommand* self) {
+ GeeMap* _tmp0_ = NULL;
+#line 2016 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 2017 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->dest_parent_attachments;
+#line 2017 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ != NULL, "dest_parent_attachments != null");
+#line 18046 "Commands.c"
+ {
+ GeeIterator* _p_it = NULL;
+ GeeMap* _tmp1_ = NULL;
+ GeeSet* _tmp2_ = NULL;
+ GeeSet* _tmp3_ = NULL;
+ GeeSet* _tmp4_ = NULL;
+ GeeIterator* _tmp5_ = NULL;
+ GeeIterator* _tmp6_ = NULL;
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->dest_parent_attachments;
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = gee_map_get_keys (_tmp1_);
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp4_);
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _p_it = _tmp6_;
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 18073 "Commands.c"
+ GeeIterator* _tmp7_ = NULL;
+ gboolean _tmp8_ = FALSE;
+ gchar* p = NULL;
+ GeeIterator* _tmp9_ = NULL;
+ gpointer _tmp10_ = NULL;
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _p_it;
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = gee_iterator_next (_tmp7_);
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp8_) {
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 18087 "Commands.c"
+ }
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _p_it;
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_iterator_get (_tmp9_);
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ p = (gchar*) _tmp10_;
+#line 18095 "Commands.c"
+ {
+ GeeIterator* _s_it = NULL;
+ GeeMap* _tmp11_ = NULL;
+ const gchar* _tmp12_ = NULL;
+ gpointer _tmp13_ = NULL;
+ GeeSet* _tmp14_ = NULL;
+ GeeIterator* _tmp15_ = NULL;
+ GeeIterator* _tmp16_ = NULL;
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = self->priv->dest_parent_attachments;
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = p;
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = gee_map_get (_tmp11_, _tmp12_);
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = (GeeSet*) _tmp13_;
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _tmp15_;
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp14_);
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _s_it = _tmp16_;
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 18122 "Commands.c"
+ GeeIterator* _tmp17_ = NULL;
+ gboolean _tmp18_ = FALSE;
+ MediaSource* s = NULL;
+ GeeIterator* _tmp19_ = NULL;
+ gpointer _tmp20_ = NULL;
+ const gchar* _tmp21_ = NULL;
+ Tag* _tmp22_ = NULL;
+ Tag* _tmp23_ = NULL;
+ MediaSource* _tmp24_ = NULL;
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _s_it;
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = gee_iterator_next (_tmp17_);
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp18_) {
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 18140 "Commands.c"
+ }
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = _s_it;
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = gee_iterator_get (_tmp19_);
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ s = (MediaSource*) _tmp20_;
+#line 2021 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = p;
+#line 2021 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = tag_for_path (_tmp21_);
+#line 2021 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _tmp22_;
+#line 2021 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = s;
+#line 2021 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach (_tmp23_, _tmp24_);
+#line 2021 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp23_);
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (s);
+#line 18162 "Commands.c"
+ }
+#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_s_it);
+#line 18166 "Commands.c"
+ }
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (p);
+#line 18170 "Commands.c"
+ }
+#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_p_it);
+#line 18174 "Commands.c"
+ }
+}
+
+
+static void reparent_tag_command_copy_subtree (ReparentTagCommand* self, const gchar* from, const gchar* to) {
+ TagSourceCollection* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gboolean _tmp2_ = FALSE;
+ Tag* from_tag = NULL;
+ const gchar* _tmp3_ = NULL;
+ Tag* _tmp4_ = NULL;
+ Tag* to_tag = NULL;
+ const gchar* _tmp5_ = NULL;
+ Tag* _tmp6_ = NULL;
+ GeeHashMap* _tmp7_ = NULL;
+ GeeList* from_children = NULL;
+ Tag* _tmp50_ = NULL;
+ GeeList* _tmp51_ = NULL;
+#line 2024 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 2024 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (from != NULL);
+#line 2024 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (to != NULL);
+#line 2025 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = tag_global;
+#line 2025 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = from;
+#line 2025 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag_source_collection_exists (_tmp0_, _tmp1_, FALSE);
+#line 2025 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp2_, "Tag.global.exists(from)");
+#line 2026 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = from;
+#line 2026 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = tag_for_path (_tmp3_);
+#line 2026 "/home/jens/Source/shotwell/src/Commands.vala"
+ from_tag = _tmp4_;
+#line 2029 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = to;
+#line 2029 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = tag_for_path (_tmp5_);
+#line 2029 "/home/jens/Source/shotwell/src/Commands.vala"
+ to_tag = _tmp6_;
+#line 2033 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, GEE_TYPE_SET, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 2033 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->dest_parent_attachments);
+#line 2033 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->dest_parent_attachments = G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_MAP, GeeMap);
+#line 18225 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ Tag* _tmp8_ = NULL;
+ GeeCollection* _tmp9_ = NULL;
+ GeeCollection* _tmp10_ = NULL;
+ GeeIterator* _tmp11_ = NULL;
+ GeeIterator* _tmp12_ = NULL;
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = from_tag;
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = tag_get_sources (_tmp8_);
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_;
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = _tmp11_;
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp10_);
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp12_;
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 18249 "Commands.c"
+ GeeIterator* _tmp13_ = NULL;
+ gboolean _tmp14_ = FALSE;
+ MediaSource* source = NULL;
+ GeeIterator* _tmp15_ = NULL;
+ gpointer _tmp16_ = NULL;
+ Tag* current_parent = NULL;
+ Tag* _tmp17_ = NULL;
+ Tag* _tmp18_ = NULL;
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _source_it;
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = gee_iterator_next (_tmp13_);
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp14_) {
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 18266 "Commands.c"
+ }
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _source_it;
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = gee_iterator_get (_tmp15_);
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (MediaSource*) _tmp16_;
+#line 2035 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = to_tag;
+#line 2035 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = tag_get_hierarchical_parent (_tmp17_);
+#line 2035 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_parent = _tmp18_;
+#line 2036 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 18282 "Commands.c"
+ Tag* _tmp19_ = NULL;
+ gchar* current_parent_path = NULL;
+ Tag* _tmp20_ = NULL;
+ gchar* _tmp21_ = NULL;
+ GeeMap* _tmp22_ = NULL;
+ const gchar* _tmp23_ = NULL;
+ gboolean _tmp24_ = FALSE;
+ Tag* _tmp29_ = NULL;
+ MediaSource* _tmp30_ = NULL;
+ gboolean _tmp31_ = FALSE;
+ Tag* _tmp37_ = NULL;
+ Tag* _tmp38_ = NULL;
+#line 2036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = current_parent;
+#line 2036 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp19_ != NULL)) {
+#line 2036 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 18301 "Commands.c"
+ }
+#line 2037 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = current_parent;
+#line 2037 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = tag_get_path (_tmp20_);
+#line 2037 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_parent_path = _tmp21_;
+#line 2038 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = self->priv->dest_parent_attachments;
+#line 2038 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = current_parent_path;
+#line 2038 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = gee_map_has_key (_tmp22_, _tmp23_);
+#line 2038 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp24_) {
+#line 18317 "Commands.c"
+ GeeMap* _tmp25_ = NULL;
+ const gchar* _tmp26_ = NULL;
+ GeeHashSet* _tmp27_ = NULL;
+ GeeHashSet* _tmp28_ = NULL;
+#line 2039 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = self->priv->dest_parent_attachments;
+#line 2039 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = current_parent_path;
+#line 2039 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = gee_hash_set_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 2039 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = _tmp27_;
+#line 2039 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_map_set (_tmp25_, _tmp26_, G_TYPE_CHECK_INSTANCE_CAST (_tmp28_, GEE_TYPE_SET, GeeSet));
+#line 2039 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp28_);
+#line 18334 "Commands.c"
+ }
+#line 2041 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = current_parent;
+#line 2041 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = source;
+#line 2041 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = tag_contains (_tmp29_, _tmp30_);
+#line 2041 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp31_) {
+#line 18344 "Commands.c"
+ GeeMap* _tmp32_ = NULL;
+ const gchar* _tmp33_ = NULL;
+ gpointer _tmp34_ = NULL;
+ GeeSet* _tmp35_ = NULL;
+ MediaSource* _tmp36_ = NULL;
+#line 2042 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = self->priv->dest_parent_attachments;
+#line 2042 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = current_parent_path;
+#line 2042 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = gee_map_get (_tmp32_, _tmp33_);
+#line 2042 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = (GeeSet*) _tmp34_;
+#line 2042 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = source;
+#line 2042 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, GEE_TYPE_COLLECTION, GeeCollection), _tmp36_);
+#line 2042 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp35_);
+#line 18364 "Commands.c"
+ }
+#line 2044 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = current_parent;
+#line 2044 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = tag_get_hierarchical_parent (_tmp37_);
+#line 2044 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (current_parent);
+#line 2044 "/home/jens/Source/shotwell/src/Commands.vala"
+ current_parent = _tmp38_;
+#line 2036 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (current_parent_path);
+#line 18376 "Commands.c"
+ }
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (current_parent);
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 18382 "Commands.c"
+ }
+#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 18386 "Commands.c"
+ }
+ {
+ GeeIterator* _source_it = NULL;
+ Tag* _tmp39_ = NULL;
+ GeeCollection* _tmp40_ = NULL;
+ GeeCollection* _tmp41_ = NULL;
+ GeeIterator* _tmp42_ = NULL;
+ GeeIterator* _tmp43_ = NULL;
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = from_tag;
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = tag_get_sources (_tmp39_);
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = _tmp40_;
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp41_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = _tmp42_;
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp41_);
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp43_;
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 18411 "Commands.c"
+ GeeIterator* _tmp44_ = NULL;
+ gboolean _tmp45_ = FALSE;
+ MediaSource* source = NULL;
+ GeeIterator* _tmp46_ = NULL;
+ gpointer _tmp47_ = NULL;
+ Tag* _tmp48_ = NULL;
+ MediaSource* _tmp49_ = NULL;
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = _source_it;
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = gee_iterator_next (_tmp44_);
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp45_) {
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 18427 "Commands.c"
+ }
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp46_ = _source_it;
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp47_ = gee_iterator_get (_tmp46_);
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (MediaSource*) _tmp47_;
+#line 2049 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp48_ = to_tag;
+#line 2049 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp49_ = source;
+#line 2049 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach (_tmp48_, _tmp49_);
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 18443 "Commands.c"
+ }
+#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 18447 "Commands.c"
+ }
+#line 2053 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp50_ = from_tag;
+#line 2053 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp51_ = tag_get_hierarchical_children (_tmp50_);
+#line 2053 "/home/jens/Source/shotwell/src/Commands.vala"
+ from_children = _tmp51_;
+#line 18455 "Commands.c"
+ {
+ gint i = 0;
+ GeeList* _tmp52_ = NULL;
+ gint _tmp53_ = 0;
+ gint _tmp54_ = 0;
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp52_ = from_children;
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp53_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp54_ = _tmp53_;
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp54_ - 1;
+#line 18469 "Commands.c"
+ {
+ gboolean _tmp55_ = FALSE;
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp55_ = TRUE;
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 18476 "Commands.c"
+ gint _tmp57_ = 0;
+ Tag* from_child = NULL;
+ GeeList* _tmp58_ = NULL;
+ gint _tmp59_ = 0;
+ gpointer _tmp60_ = NULL;
+ gchar* child_subpath = NULL;
+ Tag* _tmp61_ = NULL;
+ gchar* _tmp62_ = NULL;
+ gchar* _tmp63_ = NULL;
+ const gchar* _tmp64_ = NULL;
+ gchar* _tmp65_ = NULL;
+ gchar* _tmp66_ = NULL;
+ gchar* _tmp67_ = NULL;
+ gchar* _tmp68_ = NULL;
+ Tag* to_child = NULL;
+ Tag* _tmp69_ = NULL;
+ gchar* _tmp70_ = NULL;
+ gchar* _tmp71_ = NULL;
+ gchar* _tmp72_ = NULL;
+ gchar* _tmp73_ = NULL;
+ const gchar* _tmp74_ = NULL;
+ gchar* _tmp75_ = NULL;
+ gchar* _tmp76_ = NULL;
+ Tag* _tmp77_ = NULL;
+ Tag* _tmp78_ = NULL;
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp55_) {
+#line 18504 "Commands.c"
+ gint _tmp56_ = 0;
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp56_ = i;
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp56_ - 1;
+#line 18510 "Commands.c"
+ }
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp55_ = FALSE;
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp57_ = i;
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp57_ >= 0)) {
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 18520 "Commands.c"
+ }
+#line 2055 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp58_ = from_children;
+#line 2055 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp59_ = i;
+#line 2055 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp60_ = gee_list_get (_tmp58_, _tmp59_);
+#line 2055 "/home/jens/Source/shotwell/src/Commands.vala"
+ from_child = (Tag*) _tmp60_;
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp61_ = from_child;
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp62_ = tag_get_path (_tmp61_);
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp63_ = _tmp62_;
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp64_ = from;
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp65_ = g_strconcat (_tmp64_, TAG_PATH_SEPARATOR_STRING, NULL);
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp66_ = _tmp65_;
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp67_ = string_replace (_tmp63_, _tmp66_, "");
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp68_ = _tmp67_;
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp66_);
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp63_);
+#line 2057 "/home/jens/Source/shotwell/src/Commands.vala"
+ child_subpath = _tmp68_;
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp69_ = to_tag;
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp70_ = tag_get_path (_tmp69_);
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp71_ = _tmp70_;
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp72_ = g_strconcat (_tmp71_, TAG_PATH_SEPARATOR_STRING, NULL);
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp73_ = _tmp72_;
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp74_ = child_subpath;
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp75_ = g_strconcat (_tmp73_, _tmp74_, NULL);
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp76_ = _tmp75_;
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp77_ = tag_for_path (_tmp76_);
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp78_ = _tmp77_;
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp76_);
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp73_);
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp71_);
+#line 2060 "/home/jens/Source/shotwell/src/Commands.vala"
+ to_child = _tmp78_;
+#line 18580 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ Tag* _tmp79_ = NULL;
+ GeeCollection* _tmp80_ = NULL;
+ GeeCollection* _tmp81_ = NULL;
+ GeeIterator* _tmp82_ = NULL;
+ GeeIterator* _tmp83_ = NULL;
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp79_ = from_child;
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp80_ = tag_get_sources (_tmp79_);
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp81_ = _tmp80_;
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp82_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp81_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp83_ = _tmp82_;
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp81_);
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp83_;
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 18604 "Commands.c"
+ GeeIterator* _tmp84_ = NULL;
+ gboolean _tmp85_ = FALSE;
+ MediaSource* source = NULL;
+ GeeIterator* _tmp86_ = NULL;
+ gpointer _tmp87_ = NULL;
+ Tag* _tmp88_ = NULL;
+ MediaSource* _tmp89_ = NULL;
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp84_ = _source_it;
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp85_ = gee_iterator_next (_tmp84_);
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp85_) {
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 18620 "Commands.c"
+ }
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp86_ = _source_it;
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp87_ = gee_iterator_get (_tmp86_);
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (MediaSource*) _tmp87_;
+#line 2064 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp88_ = to_child;
+#line 2064 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp89_ = source;
+#line 2064 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach (_tmp88_, _tmp89_);
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 18636 "Commands.c"
+ }
+#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 18640 "Commands.c"
+ }
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (to_child);
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (child_subpath);
+#line 2054 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (from_child);
+#line 18648 "Commands.c"
+ }
+ }
+ }
+#line 2024 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (from_children);
+#line 2024 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (to_tag);
+#line 2024 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (from_tag);
+#line 18658 "Commands.c"
+}
+
+
+static void reparent_tag_command_destroy_subtree (ReparentTagCommand* self, const gchar* client_path) {
+ gchar* victim_path = NULL;
+ const gchar* _tmp0_ = NULL;
+ gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ TagSourceCollection* _tmp5_ = NULL;
+ const gchar* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+ Tag* victim = NULL;
+ const gchar* _tmp8_ = NULL;
+ Tag* _tmp9_ = NULL;
+ GeeList* victim_children = NULL;
+ Tag* _tmp10_ = NULL;
+ GeeList* _tmp11_ = NULL;
+ TagSourceCollection* _tmp26_ = NULL;
+ TagSourceCollection* _tmp27_ = NULL;
+ Tag* _tmp28_ = NULL;
+ Marker* _tmp29_ = NULL;
+ Marker* _tmp30_ = NULL;
+#line 2068 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_REPARENT_TAG_COMMAND (self));
+#line 2068 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (client_path != NULL);
+#line 2069 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = client_path;
+#line 2069 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = hierarchical_tag_utilities_get_root_path_form (_tmp0_);
+#line 2069 "/home/jens/Source/shotwell/src/Commands.vala"
+ victim_path = _tmp1_;
+#line 2070 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = victim_path;
+#line 2070 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ == NULL) {
+#line 18695 "Commands.c"
+ const gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+#line 2071 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = client_path;
+#line 2071 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = g_strdup (_tmp3_);
+#line 2071 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (victim_path);
+#line 2071 "/home/jens/Source/shotwell/src/Commands.vala"
+ victim_path = _tmp4_;
+#line 18706 "Commands.c"
+ }
+#line 2073 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = tag_global;
+#line 2073 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = victim_path;
+#line 2073 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = tag_source_collection_exists (_tmp5_, _tmp6_, FALSE);
+#line 2073 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp7_) {
+#line 2074 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (victim_path);
+#line 2074 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 18720 "Commands.c"
+ }
+#line 2076 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = victim_path;
+#line 2076 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = tag_for_path (_tmp8_);
+#line 2076 "/home/jens/Source/shotwell/src/Commands.vala"
+ victim = _tmp9_;
+#line 2079 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = victim;
+#line 2079 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = tag_get_hierarchical_children (_tmp10_);
+#line 2079 "/home/jens/Source/shotwell/src/Commands.vala"
+ victim_children = _tmp11_;
+#line 18734 "Commands.c"
+ {
+ gint i = 0;
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = 0;
+#line 18739 "Commands.c"
+ {
+ gboolean _tmp12_ = FALSE;
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = TRUE;
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 18746 "Commands.c"
+ gint _tmp14_ = 0;
+ GeeList* _tmp15_ = NULL;
+ gint _tmp16_ = 0;
+ gint _tmp17_ = 0;
+ TagSourceCollection* _tmp18_ = NULL;
+ TagSourceCollection* _tmp19_ = NULL;
+ GeeList* _tmp20_ = NULL;
+ gint _tmp21_ = 0;
+ gpointer _tmp22_ = NULL;
+ Tag* _tmp23_ = NULL;
+ Marker* _tmp24_ = NULL;
+ Marker* _tmp25_ = NULL;
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp12_) {
+#line 18761 "Commands.c"
+ gint _tmp13_ = 0;
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = i;
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ i = _tmp13_ + 1;
+#line 18767 "Commands.c"
+ }
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = FALSE;
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = i;
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = victim_children;
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _tmp16_;
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp14_ < _tmp17_)) {
+#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 18783 "Commands.c"
+ }
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = tag_global;
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = tag_global;
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = victim_children;
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = i;
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = gee_list_get (_tmp20_, _tmp21_);
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = (Tag*) _tmp22_;
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = data_collection_mark (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, TYPE_DATA_OBJECT, DataObject));
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = _tmp24_;
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ source_collection_destroy_marked (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, TYPE_SOURCE_COLLECTION, SourceCollection), _tmp25_, TRUE, NULL, NULL, NULL);
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp25_);
+#line 2081 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp23_);
+#line 18807 "Commands.c"
+ }
+ }
+ }
+#line 2084 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = tag_global;
+#line 2084 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = tag_global;
+#line 2084 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = victim;
+#line 2084 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = data_collection_mark (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, TYPE_DATA_COLLECTION, DataCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp28_, TYPE_DATA_OBJECT, DataObject));
+#line 2084 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = _tmp29_;
+#line 2084 "/home/jens/Source/shotwell/src/Commands.vala"
+ source_collection_destroy_marked (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, TYPE_SOURCE_COLLECTION, SourceCollection), _tmp30_, TRUE, NULL, NULL, NULL);
+#line 2084 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp30_);
+#line 2068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (victim_children);
+#line 2068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (victim);
+#line 2068 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (victim_path);
+#line 18831 "Commands.c"
+}
+
+
+static void reparent_tag_command_real_execute (Command* base) {
+ ReparentTagCommand * self;
+ GeeList* _tmp0_ = NULL;
+#line 2087 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_REPARENT_TAG_COMMAND, ReparentTagCommand);
+#line 2088 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->after_state;
+#line 2088 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_ == NULL) {
+#line 18844 "Commands.c"
+ const gchar* _tmp1_ = NULL;
+ const gchar* _tmp2_ = NULL;
+ const gchar* _tmp3_ = NULL;
+ const gchar* _tmp4_ = NULL;
+#line 2089 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_save_before_state (self);
+#line 2091 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->to_path;
+#line 2091 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_prepare_parent (self, _tmp1_);
+#line 2093 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->from_path;
+#line 2093 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->to_path;
+#line 2093 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_copy_subtree (self, _tmp2_, _tmp3_);
+#line 2095 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_save_after_state (self);
+#line 2097 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_do_source_parent_detachments (self);
+#line 2099 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->from_path;
+#line 2099 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_destroy_subtree (self, _tmp4_);
+#line 18869 "Commands.c"
+ } else {
+ const gchar* _tmp5_ = NULL;
+ const gchar* _tmp6_ = NULL;
+ GeeMap* _tmp7_ = NULL;
+ const gchar* _tmp8_ = NULL;
+ const gchar* _tmp9_ = NULL;
+#line 2101 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->to_path;
+#line 2101 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_prepare_parent (self, _tmp5_);
+#line 2103 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_restore_after_state (self);
+#line 2105 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = self->priv->to_path;
+#line 2105 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->in_play_child_structure;
+#line 2105 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_restore_child_attachments_at (self, _tmp6_, _tmp7_);
+#line 2106 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = self->priv->to_path;
+#line 2106 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_reattach_in_play_sources_at (self, _tmp8_);
+#line 2108 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_do_source_parent_detachments (self);
+#line 2109 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_do_destination_parent_reattachments (self);
+#line 2111 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->priv->from_path;
+#line 2111 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_destroy_subtree (self, _tmp9_);
+#line 18900 "Commands.c"
+ }
+}
+
+
+static void reparent_tag_command_real_undo (Command* base) {
+ ReparentTagCommand * self;
+ GeeList* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gboolean _tmp2_ = FALSE;
+ const gchar* _tmp4_ = NULL;
+ GeeMap* _tmp5_ = NULL;
+ const gchar* _tmp6_ = NULL;
+ const gchar* _tmp7_ = NULL;
+ const gchar* _tmp8_ = NULL;
+ const gchar* _tmp9_ = NULL;
+#line 2115 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_REPARENT_TAG_COMMAND, ReparentTagCommand);
+#line 2116 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->src_before_state;
+#line 2116 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp0_ != NULL, "src_before_state != null");
+#line 2118 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->from_path;
+#line 2118 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_prepare_parent (self, _tmp1_);
+#line 2120 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_restore_before_state (self);
+#line 2122 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->to_path_exists;
+#line 2122 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp2_) {
+#line 18932 "Commands.c"
+ const gchar* _tmp3_ = NULL;
+#line 2123 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->to_path;
+#line 2123 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_destroy_subtree (self, _tmp3_);
+#line 18938 "Commands.c"
+ }
+#line 2125 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->from_path;
+#line 2125 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = self->priv->in_play_child_structure;
+#line 2125 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_restore_child_attachments_at (self, _tmp4_, _tmp5_);
+#line 2126 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = self->priv->from_path;
+#line 2126 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_reattach_in_play_sources_at (self, _tmp6_);
+#line 2128 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_do_source_parent_reattachments (self);
+#line 2129 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_do_destination_parent_detachments (self);
+#line 2131 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->to_path;
+#line 2131 "/home/jens/Source/shotwell/src/Commands.vala"
+ hierarchical_tag_utilities_cleanup_root_path (_tmp7_);
+#line 2132 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = self->priv->from_path;
+#line 2132 "/home/jens/Source/shotwell/src/Commands.vala"
+ hierarchical_tag_utilities_cleanup_root_path (_tmp8_);
+#line 2133 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->priv->to_path_parent_path;
+#line 2133 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp9_ != NULL) {
+#line 18966 "Commands.c"
+ const gchar* _tmp10_ = NULL;
+#line 2134 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = self->priv->to_path_parent_path;
+#line 2134 "/home/jens/Source/shotwell/src/Commands.vala"
+ hierarchical_tag_utilities_cleanup_root_path (_tmp10_);
+#line 18972 "Commands.c"
+ }
+}
+
+
+static void reparent_tag_command_class_init (ReparentTagCommandClass * klass) {
+#line 1679 "/home/jens/Source/shotwell/src/Commands.vala"
+ reparent_tag_command_parent_class = g_type_class_peek_parent (klass);
+#line 1679 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (ReparentTagCommandPrivate));
+#line 1679 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = reparent_tag_command_real_execute;
+#line 1679 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = reparent_tag_command_real_undo;
+#line 1679 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = reparent_tag_command_finalize;
+#line 18988 "Commands.c"
+}
+
+
+static void reparent_tag_command_instance_init (ReparentTagCommand * self) {
+ GeeHashSet* _tmp0_ = NULL;
+#line 1679 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = REPARENT_TAG_COMMAND_GET_PRIVATE (self);
+#line 1683 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->src_before_state = NULL;
+#line 1684 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->dest_before_state = NULL;
+#line 1685 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->after_state = NULL;
+#line 1686 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_hash_set_new (TYPE_MEDIA_SOURCE, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL, NULL, NULL, NULL);
+#line 1686 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->sources_in_play = _tmp0_;
+#line 1687 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->dest_parent_attachments = NULL;
+#line 1688 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->src_parent_detachments = NULL;
+#line 1689 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->in_play_child_structure = NULL;
+#line 1690 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->existing_dest_child_structure = NULL;
+#line 1691 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->existing_dest_membership = NULL;
+#line 1692 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_path_exists = FALSE;
+#line 19018 "Commands.c"
+}
+
+
+static void reparent_tag_command_finalize (GObject* obj) {
+ ReparentTagCommand * self;
+ LibraryPhotoSourceCollection* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+ VideoSourceCollection* _tmp2_ = NULL;
+ guint _tmp3_ = 0U;
+#line 1679 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_REPARENT_TAG_COMMAND, ReparentTagCommand);
+#line 1724 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = library_photo_global;
+#line 1724 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("items-destroyed", TYPE_SOURCE_COLLECTION, &_tmp1_, NULL, FALSE);
+#line 1724 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_SOURCE_COLLECTION, SourceCollection), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _reparent_tag_command_on_items_destroyed_source_collection_items_destroyed, self);
+#line 1725 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = video_global;
+#line 1725 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("items-destroyed", TYPE_SOURCE_COLLECTION, &_tmp3_, NULL, FALSE);
+#line 1725 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_SOURCE_COLLECTION, SourceCollection), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp3_, 0, NULL, (GCallback) _reparent_tag_command_on_items_destroyed_source_collection_items_destroyed, self);
+#line 1680 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->from_path);
+#line 1681 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->to_path);
+#line 1682 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->to_path_parent_path);
+#line 1683 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->src_before_state);
+#line 1684 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->dest_before_state);
+#line 1685 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->after_state);
+#line 1686 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->sources_in_play);
+#line 1687 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->dest_parent_attachments);
+#line 1688 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->src_parent_detachments);
+#line 1689 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->in_play_child_structure);
+#line 1690 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->existing_dest_child_structure);
+#line 1691 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->existing_dest_membership);
+#line 1679 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (reparent_tag_command_parent_class)->finalize (obj);
+#line 19068 "Commands.c"
+}
+
+
+GType reparent_tag_command_get_type (void) {
+ static volatile gsize reparent_tag_command_type_id__volatile = 0;
+ if (g_once_init_enter (&reparent_tag_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (ReparentTagCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) reparent_tag_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ReparentTagCommand), 0, (GInstanceInitFunc) reparent_tag_command_instance_init, NULL };
+ GType reparent_tag_command_type_id;
+ reparent_tag_command_type_id = g_type_register_static (TYPE_PAGE_COMMAND, "ReparentTagCommand", &g_define_type_info, 0);
+ g_once_init_leave (&reparent_tag_command_type_id__volatile, reparent_tag_command_type_id);
+ }
+ return reparent_tag_command_type_id__volatile;
+}
+
+
+static void _modify_tags_command_on_proxy_broken_source_proxy_broken (SourceProxy* _sender, gpointer self) {
+#line 2179 "/home/jens/Source/shotwell/src/Commands.vala"
+ modify_tags_command_on_proxy_broken ((ModifyTagsCommand*) self);
+#line 19087 "Commands.c"
+}
+
+
+ModifyTagsCommand* modify_tags_command_construct (GType object_type, MediaSource* media, GeeCollection* new_tag_list) {
+ ModifyTagsCommand * self = NULL;
+ MediaSource* _tmp0_ = NULL;
+ MediaSource* _tmp1_ = NULL;
+ MediaSource* _tmp2_ = NULL;
+ GeeList* original_tags = NULL;
+ TagSourceCollection* _tmp3_ = NULL;
+ MediaSource* _tmp4_ = NULL;
+ GeeList* _tmp5_ = NULL;
+ GeeList* _tmp6_ = NULL;
+ GeeSortedSet* new_paths = NULL;
+ GeeTreeSet* _tmp23_ = NULL;
+#line 2143 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_MEDIA_SOURCE (media), NULL);
+#line 2143 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_COLLECTION (new_tag_list), NULL);
+#line 2144 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = media;
+#line 2144 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (ModifyTagsCommand*) single_data_source_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_SOURCE, DataSource), RESOURCES_MODIFY_TAGS_LABEL, "");
+#line 2146 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = media;
+#line 2146 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 2146 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->media);
+#line 2146 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->media = _tmp2_;
+#line 2149 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = tag_global;
+#line 2149 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = media;
+#line 2149 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = tag_source_collection_fetch_for_source (_tmp3_, _tmp4_);
+#line 2149 "/home/jens/Source/shotwell/src/Commands.vala"
+ original_tags = _tmp5_;
+#line 2150 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = original_tags;
+#line 2150 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp6_ != NULL) {
+#line 19131 "Commands.c"
+ {
+ GeeList* _tag_list = NULL;
+ GeeList* _tmp7_ = NULL;
+ GeeList* _tmp8_ = NULL;
+ gint _tag_size = 0;
+ GeeList* _tmp9_ = NULL;
+ gint _tmp10_ = 0;
+ gint _tmp11_ = 0;
+ gint _tag_index = 0;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = original_tags;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _g_object_ref0 (_tmp7_);
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tag_list = _tmp8_;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _tag_list;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _tmp10_;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tag_size = _tmp11_;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tag_index = -1;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 19159 "Commands.c"
+ gint _tmp12_ = 0;
+ gint _tmp13_ = 0;
+ gint _tmp14_ = 0;
+ Tag* tag = NULL;
+ GeeList* _tmp15_ = NULL;
+ gint _tmp16_ = 0;
+ gpointer _tmp17_ = NULL;
+ SourceProxy* proxy = NULL;
+ Tag* _tmp18_ = NULL;
+ SourceProxy* _tmp19_ = NULL;
+ GeeArrayList* _tmp20_ = NULL;
+ SourceProxy* _tmp21_ = NULL;
+ SourceProxy* _tmp22_ = NULL;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = _tag_index;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tag_index = _tmp12_ + 1;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _tag_index;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _tag_size;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp13_ < _tmp14_)) {
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 19185 "Commands.c"
+ }
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _tag_list;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _tag_index;
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = gee_list_get (_tmp15_, _tmp16_);
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag = (Tag*) _tmp17_;
+#line 2152 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = tag;
+#line 2152 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, TYPE_PROXYABLE, Proxyable));
+#line 2152 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = _tmp19_;
+#line 2153 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = self->priv->to_remove;
+#line 2153 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = proxy;
+#line 2153 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp21_);
+#line 2154 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = proxy;
+#line 2154 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp22_, "broken", (GCallback) _modify_tags_command_on_proxy_broken_source_proxy_broken, self, 0);
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (tag);
+#line 19215 "Commands.c"
+ }
+#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tag_list);
+#line 19219 "Commands.c"
+ }
+ }
+#line 2160 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = gee_tree_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
+#line 2160 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_paths = G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, GEE_TYPE_SORTED_SET, GeeSortedSet);
+#line 19226 "Commands.c"
+ {
+ GeeIterator* _new_tag_it = NULL;
+ GeeCollection* _tmp24_ = NULL;
+ GeeIterator* _tmp25_ = NULL;
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = new_tag_list;
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ _new_tag_it = _tmp25_;
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 19239 "Commands.c"
+ GeeIterator* _tmp26_ = NULL;
+ gboolean _tmp27_ = FALSE;
+ Tag* new_tag = NULL;
+ GeeIterator* _tmp28_ = NULL;
+ gpointer _tmp29_ = NULL;
+ gchar* new_tag_path = NULL;
+ Tag* _tmp30_ = NULL;
+ gchar* _tmp31_ = NULL;
+ GeeSortedSet* _tmp32_ = NULL;
+ const gchar* _tmp33_ = NULL;
+ GeeSortedSet* _tmp34_ = NULL;
+ const gchar* _tmp35_ = NULL;
+ GeeList* _tmp36_ = NULL;
+ GeeList* _tmp37_ = NULL;
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _new_tag_it;
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = gee_iterator_next (_tmp26_);
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp27_) {
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 19262 "Commands.c"
+ }
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = _new_tag_it;
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = gee_iterator_get (_tmp28_);
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_tag = (Tag*) _tmp29_;
+#line 2162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = new_tag;
+#line 2162 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = tag_get_path (_tmp30_);
+#line 2162 "/home/jens/Source/shotwell/src/Commands.vala"
+ new_tag_path = _tmp31_;
+#line 2164 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp32_ = new_paths;
+#line 2164 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp33_ = new_tag_path;
+#line 2164 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp32_, GEE_TYPE_COLLECTION, GeeCollection), _tmp33_);
+#line 2165 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp34_ = new_paths;
+#line 2165 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp35_ = new_tag_path;
+#line 2165 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp36_ = hierarchical_tag_utilities_enumerate_parent_paths (_tmp35_);
+#line 2165 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp37_ = _tmp36_;
+#line 2165 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, GEE_TYPE_COLLECTION, GeeCollection), G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2165 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp37_);
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (new_tag_path);
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (new_tag);
+#line 19298 "Commands.c"
+ }
+#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_new_tag_it);
+#line 19302 "Commands.c"
+ }
+ {
+ GeeIterator* _path_it = NULL;
+ GeeSortedSet* _tmp38_ = NULL;
+ GeeIterator* _tmp39_ = NULL;
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp38_ = new_paths;
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp39_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _path_it = _tmp39_;
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 19316 "Commands.c"
+ GeeIterator* _tmp40_ = NULL;
+ gboolean _tmp41_ = FALSE;
+ gchar* path = NULL;
+ GeeIterator* _tmp42_ = NULL;
+ gpointer _tmp43_ = NULL;
+ TagSourceCollection* _tmp44_ = NULL;
+ const gchar* _tmp45_ = NULL;
+ gboolean _tmp46_ = FALSE;
+ SourceProxy* proxy = NULL;
+ const gchar* _tmp47_ = NULL;
+ Tag* _tmp48_ = NULL;
+ Tag* _tmp49_ = NULL;
+ SourceProxy* _tmp50_ = NULL;
+ SourceProxy* _tmp51_ = NULL;
+ GeeArrayList* _tmp52_ = NULL;
+ SourceProxy* _tmp53_ = NULL;
+ SourceProxy* _tmp54_ = NULL;
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp40_ = _path_it;
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp41_ = gee_iterator_next (_tmp40_);
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp41_) {
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 19342 "Commands.c"
+ }
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp42_ = _path_it;
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp43_ = gee_iterator_get (_tmp42_);
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ path = (gchar*) _tmp43_;
+#line 2169 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp44_ = tag_global;
+#line 2169 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp45_ = path;
+#line 2169 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp46_ = tag_source_collection_exists (_tmp44_, _tmp45_, FALSE);
+#line 2169 "/home/jens/Source/shotwell/src/Commands.vala"
+ _vala_assert (_tmp46_, "Tag.global.exists(path)");
+#line 2171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp47_ = path;
+#line 2171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp48_ = tag_for_path (_tmp47_);
+#line 2171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp49_ = _tmp48_;
+#line 2171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp50_ = proxyable_get_proxy (G_TYPE_CHECK_INSTANCE_CAST (_tmp49_, TYPE_PROXYABLE, Proxyable));
+#line 2171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp51_ = _tmp50_;
+#line 2171 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp49_);
+#line 2171 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = _tmp51_;
+#line 2172 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp52_ = self->priv->to_add;
+#line 2172 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp53_ = proxy;
+#line 2172 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp53_);
+#line 2173 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp54_ = proxy;
+#line 2173 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (_tmp54_, "broken", (GCallback) _modify_tags_command_on_proxy_broken_source_proxy_broken, self, 0);
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (path);
+#line 19386 "Commands.c"
+ }
+#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_path_it);
+#line 19390 "Commands.c"
+ }
+#line 2143 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (new_paths);
+#line 2143 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (original_tags);
+#line 2143 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 19398 "Commands.c"
+}
+
+
+ModifyTagsCommand* modify_tags_command_new (MediaSource* media, GeeCollection* new_tag_list) {
+#line 2143 "/home/jens/Source/shotwell/src/Commands.vala"
+ return modify_tags_command_construct (TYPE_MODIFY_TAGS_COMMAND, media, new_tag_list);
+#line 19405 "Commands.c"
+}
+
+
+static void modify_tags_command_real_execute (Command* base) {
+ ModifyTagsCommand * self;
+#line 2185 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MODIFY_TAGS_COMMAND, ModifyTagsCommand);
+#line 19413 "Commands.c"
+ {
+ GeeArrayList* _proxy_list = NULL;
+ GeeArrayList* _tmp0_ = NULL;
+ GeeArrayList* _tmp1_ = NULL;
+ gint _proxy_size = 0;
+ GeeArrayList* _tmp2_ = NULL;
+ gint _tmp3_ = 0;
+ gint _tmp4_ = 0;
+ gint _proxy_index = 0;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->to_remove;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_list = _tmp1_;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _proxy_list;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_size = _tmp4_;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = -1;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 19441 "Commands.c"
+ gint _tmp5_ = 0;
+ gint _tmp6_ = 0;
+ gint _tmp7_ = 0;
+ SourceProxy* proxy = NULL;
+ GeeArrayList* _tmp8_ = NULL;
+ gint _tmp9_ = 0;
+ gpointer _tmp10_ = NULL;
+ SourceProxy* _tmp11_ = NULL;
+ DataSource* _tmp12_ = NULL;
+ Tag* _tmp13_ = NULL;
+ MediaSource* _tmp14_ = NULL;
+ GeeList* _tmp15_ = NULL;
+ GeeList* _tmp16_ = NULL;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _proxy_index;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = _tmp5_ + 1;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _proxy_index;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _proxy_size;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp6_ < _tmp7_)) {
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 19467 "Commands.c"
+ }
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _proxy_list;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _proxy_index;
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp9_);
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = (SourceProxy*) _tmp10_;
+#line 2187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = proxy;
+#line 2187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = source_proxy_get_source (_tmp11_);
+#line 2187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, TYPE_TAG, Tag);
+#line 2187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = self->priv->media;
+#line 2187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = tag_detach (_tmp13_, _tmp14_);
+#line 2187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _tmp15_;
+#line 2187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp16_);
+#line 2187 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp13_);
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 19495 "Commands.c"
+ }
+#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_proxy_list);
+#line 19499 "Commands.c"
+ }
+ {
+ GeeArrayList* _proxy_list = NULL;
+ GeeArrayList* _tmp17_ = NULL;
+ GeeArrayList* _tmp18_ = NULL;
+ gint _proxy_size = 0;
+ GeeArrayList* _tmp19_ = NULL;
+ gint _tmp20_ = 0;
+ gint _tmp21_ = 0;
+ gint _proxy_index = 0;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = self->priv->to_add;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = _g_object_ref0 (_tmp17_);
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_list = _tmp18_;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = _proxy_list;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = _tmp20_;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_size = _tmp21_;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = -1;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 19528 "Commands.c"
+ gint _tmp22_ = 0;
+ gint _tmp23_ = 0;
+ gint _tmp24_ = 0;
+ SourceProxy* proxy = NULL;
+ GeeArrayList* _tmp25_ = NULL;
+ gint _tmp26_ = 0;
+ gpointer _tmp27_ = NULL;
+ SourceProxy* _tmp28_ = NULL;
+ DataSource* _tmp29_ = NULL;
+ Tag* _tmp30_ = NULL;
+ MediaSource* _tmp31_ = NULL;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = _proxy_index;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = _tmp22_ + 1;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _proxy_index;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _proxy_size;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp23_ < _tmp24_)) {
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 19552 "Commands.c"
+ }
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = _proxy_list;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _proxy_index;
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp26_);
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = (SourceProxy*) _tmp27_;
+#line 2190 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = proxy;
+#line 2190 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = source_proxy_get_source (_tmp28_);
+#line 2190 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, TYPE_TAG, Tag);
+#line 2190 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = self->priv->media;
+#line 2190 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach (_tmp30_, _tmp31_);
+#line 2190 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp30_);
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 19576 "Commands.c"
+ }
+#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_proxy_list);
+#line 19580 "Commands.c"
+ }
+}
+
+
+static void modify_tags_command_real_undo (Command* base) {
+ ModifyTagsCommand * self;
+#line 2193 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_MODIFY_TAGS_COMMAND, ModifyTagsCommand);
+#line 19589 "Commands.c"
+ {
+ GeeArrayList* _proxy_list = NULL;
+ GeeArrayList* _tmp0_ = NULL;
+ GeeArrayList* _tmp1_ = NULL;
+ gint _proxy_size = 0;
+ GeeArrayList* _tmp2_ = NULL;
+ gint _tmp3_ = 0;
+ gint _tmp4_ = 0;
+ gint _proxy_index = 0;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->to_add;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_list = _tmp1_;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _proxy_list;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_size = _tmp4_;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = -1;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 19617 "Commands.c"
+ gint _tmp5_ = 0;
+ gint _tmp6_ = 0;
+ gint _tmp7_ = 0;
+ SourceProxy* proxy = NULL;
+ GeeArrayList* _tmp8_ = NULL;
+ gint _tmp9_ = 0;
+ gpointer _tmp10_ = NULL;
+ SourceProxy* _tmp11_ = NULL;
+ DataSource* _tmp12_ = NULL;
+ Tag* _tmp13_ = NULL;
+ MediaSource* _tmp14_ = NULL;
+ GeeList* _tmp15_ = NULL;
+ GeeList* _tmp16_ = NULL;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _proxy_index;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = _tmp5_ + 1;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _proxy_index;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _proxy_size;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp6_ < _tmp7_)) {
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 19643 "Commands.c"
+ }
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _proxy_list;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _proxy_index;
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp9_);
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = (SourceProxy*) _tmp10_;
+#line 2195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = proxy;
+#line 2195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = source_proxy_get_source (_tmp11_);
+#line 2195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, TYPE_TAG, Tag);
+#line 2195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = self->priv->media;
+#line 2195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = tag_detach (_tmp13_, _tmp14_);
+#line 2195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _tmp15_;
+#line 2195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp16_);
+#line 2195 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp13_);
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 19671 "Commands.c"
+ }
+#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_proxy_list);
+#line 19675 "Commands.c"
+ }
+ {
+ GeeArrayList* _proxy_list = NULL;
+ GeeArrayList* _tmp17_ = NULL;
+ GeeArrayList* _tmp18_ = NULL;
+ gint _proxy_size = 0;
+ GeeArrayList* _tmp19_ = NULL;
+ gint _tmp20_ = 0;
+ gint _tmp21_ = 0;
+ gint _proxy_index = 0;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = self->priv->to_remove;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = _g_object_ref0 (_tmp17_);
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_list = _tmp18_;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = _proxy_list;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = _tmp20_;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_size = _tmp21_;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = -1;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 19704 "Commands.c"
+ gint _tmp22_ = 0;
+ gint _tmp23_ = 0;
+ gint _tmp24_ = 0;
+ SourceProxy* proxy = NULL;
+ GeeArrayList* _tmp25_ = NULL;
+ gint _tmp26_ = 0;
+ gpointer _tmp27_ = NULL;
+ SourceProxy* _tmp28_ = NULL;
+ DataSource* _tmp29_ = NULL;
+ Tag* _tmp30_ = NULL;
+ MediaSource* _tmp31_ = NULL;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = _proxy_index;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = _tmp22_ + 1;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _proxy_index;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _proxy_size;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp23_ < _tmp24_)) {
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 19728 "Commands.c"
+ }
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = _proxy_list;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _proxy_index;
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp26_);
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = (SourceProxy*) _tmp27_;
+#line 2198 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = proxy;
+#line 2198 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = source_proxy_get_source (_tmp28_);
+#line 2198 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, TYPE_TAG, Tag);
+#line 2198 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp31_ = self->priv->media;
+#line 2198 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach (_tmp30_, _tmp31_);
+#line 2198 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp30_);
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 19752 "Commands.c"
+ }
+#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_proxy_list);
+#line 19756 "Commands.c"
+ }
+}
+
+
+static void modify_tags_command_on_proxy_broken (ModifyTagsCommand* self) {
+ CommandManager* _tmp0_ = NULL;
+ CommandManager* _tmp1_ = NULL;
+#line 2201 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_MODIFY_TAGS_COMMAND (self));
+#line 2202 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 2202 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 2202 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp1_);
+#line 2202 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp1_);
+#line 19774 "Commands.c"
+}
+
+
+static void modify_tags_command_class_init (ModifyTagsCommandClass * klass) {
+#line 2138 "/home/jens/Source/shotwell/src/Commands.vala"
+ modify_tags_command_parent_class = g_type_class_peek_parent (klass);
+#line 2138 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (ModifyTagsCommandPrivate));
+#line 2138 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = modify_tags_command_real_execute;
+#line 2138 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = modify_tags_command_real_undo;
+#line 2138 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = modify_tags_command_finalize;
+#line 19789 "Commands.c"
+}
+
+
+static void modify_tags_command_instance_init (ModifyTagsCommand * self) {
+ GeeArrayList* _tmp0_ = NULL;
+ GeeArrayList* _tmp1_ = NULL;
+#line 2138 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = MODIFY_TAGS_COMMAND_GET_PRIVATE (self);
+#line 2140 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = gee_array_list_new (TYPE_SOURCE_PROXY, (GBoxedCopyFunc) source_proxy_ref, source_proxy_unref, NULL, NULL, NULL);
+#line 2140 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_add = _tmp0_;
+#line 2141 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_array_list_new (TYPE_SOURCE_PROXY, (GBoxedCopyFunc) source_proxy_ref, source_proxy_unref, NULL, NULL, NULL);
+#line 2141 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_remove = _tmp1_;
+#line 19806 "Commands.c"
+}
+
+
+static void modify_tags_command_finalize (GObject* obj) {
+ ModifyTagsCommand * self;
+#line 2138 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MODIFY_TAGS_COMMAND, ModifyTagsCommand);
+#line 19814 "Commands.c"
+ {
+ GeeArrayList* _proxy_list = NULL;
+ GeeArrayList* _tmp0_ = NULL;
+ GeeArrayList* _tmp1_ = NULL;
+ gint _proxy_size = 0;
+ GeeArrayList* _tmp2_ = NULL;
+ gint _tmp3_ = 0;
+ gint _tmp4_ = 0;
+ gint _proxy_index = 0;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->to_add;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_list = _tmp1_;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _proxy_list;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_size = _tmp4_;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = -1;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 19842 "Commands.c"
+ gint _tmp5_ = 0;
+ gint _tmp6_ = 0;
+ gint _tmp7_ = 0;
+ SourceProxy* proxy = NULL;
+ GeeArrayList* _tmp8_ = NULL;
+ gint _tmp9_ = 0;
+ gpointer _tmp10_ = NULL;
+ SourceProxy* _tmp11_ = NULL;
+ guint _tmp12_ = 0U;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _proxy_index;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = _tmp5_ + 1;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _proxy_index;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _proxy_size;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp6_ < _tmp7_)) {
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 19864 "Commands.c"
+ }
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _proxy_list;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _proxy_index;
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp9_);
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = (SourceProxy*) _tmp10_;
+#line 2179 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = proxy;
+#line 2179 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_SOURCE_PROXY, &_tmp12_, NULL, FALSE);
+#line 2179 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp11_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp12_, 0, NULL, (GCallback) _modify_tags_command_on_proxy_broken_source_proxy_broken, self);
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 19882 "Commands.c"
+ }
+#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_proxy_list);
+#line 19886 "Commands.c"
+ }
+ {
+ GeeArrayList* _proxy_list = NULL;
+ GeeArrayList* _tmp13_ = NULL;
+ GeeArrayList* _tmp14_ = NULL;
+ gint _proxy_size = 0;
+ GeeArrayList* _tmp15_ = NULL;
+ gint _tmp16_ = 0;
+ gint _tmp17_ = 0;
+ gint _proxy_index = 0;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = self->priv->to_remove;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _g_object_ref0 (_tmp13_);
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_list = _tmp14_;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _proxy_list;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _tmp16_;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_size = _tmp17_;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = -1;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 19915 "Commands.c"
+ gint _tmp18_ = 0;
+ gint _tmp19_ = 0;
+ gint _tmp20_ = 0;
+ SourceProxy* proxy = NULL;
+ GeeArrayList* _tmp21_ = NULL;
+ gint _tmp22_ = 0;
+ gpointer _tmp23_ = NULL;
+ SourceProxy* _tmp24_ = NULL;
+ guint _tmp25_ = 0U;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = _proxy_index;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _proxy_index = _tmp18_ + 1;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = _proxy_index;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = _proxy_size;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp19_ < _tmp20_)) {
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 19937 "Commands.c"
+ }
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = _proxy_list;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = _proxy_index;
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp22_);
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ proxy = (SourceProxy*) _tmp23_;
+#line 2182 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = proxy;
+#line 2182 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("broken", TYPE_SOURCE_PROXY, &_tmp25_, NULL, FALSE);
+#line 2182 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (_tmp24_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp25_, 0, NULL, (GCallback) _modify_tags_command_on_proxy_broken_source_proxy_broken, self);
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_proxy_unref0 (proxy);
+#line 19955 "Commands.c"
+ }
+#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_proxy_list);
+#line 19959 "Commands.c"
+ }
+#line 2139 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->media);
+#line 2140 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->to_add);
+#line 2141 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->to_remove);
+#line 2138 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (modify_tags_command_parent_class)->finalize (obj);
+#line 19969 "Commands.c"
+}
+
+
+GType modify_tags_command_get_type (void) {
+ static volatile gsize modify_tags_command_type_id__volatile = 0;
+ if (g_once_init_enter (&modify_tags_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (ModifyTagsCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) modify_tags_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModifyTagsCommand), 0, (GInstanceInitFunc) modify_tags_command_instance_init, NULL };
+ GType modify_tags_command_type_id;
+ modify_tags_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "ModifyTagsCommand", &g_define_type_info, 0);
+ g_once_init_leave (&modify_tags_command_type_id__volatile, modify_tags_command_type_id);
+ }
+ return modify_tags_command_type_id__volatile;
+}
+
+
+static void _tag_untag_photos_command_on_source_destroyed_source_collection_item_destroyed (SourceCollection* _sender, DataSource* source, gpointer self) {
+#line 2226 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_untag_photos_command_on_source_destroyed ((TagUntagPhotosCommand*) self, source);
+#line 19988 "Commands.c"
+}
+
+
+TagUntagPhotosCommand* tag_untag_photos_command_construct (GType object_type, Tag* tag, GeeCollection* sources, gint count, gboolean attach) {
+ TagUntagPhotosCommand * self = NULL;
+ gchar* _tmp0_ = NULL;
+ gboolean _tmp1_ = FALSE;
+ Tag* _tmp12_ = NULL;
+ Tag* _tmp13_ = NULL;
+ gchar* _tmp14_ = NULL;
+ gchar* _tmp15_ = NULL;
+ GeeCollection* _tmp16_ = NULL;
+ GeeCollection* _tmp17_ = NULL;
+ gboolean _tmp18_ = FALSE;
+ LibraryPhotoSourceCollection* _tmp19_ = NULL;
+ VideoSourceCollection* _tmp20_ = NULL;
+#line 2212 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_TAG (tag), NULL);
+#line 2212 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_COLLECTION (sources), NULL);
+#line 2214 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = attach;
+#line 2214 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_) {
+#line 20013 "Commands.c"
+ Tag* _tmp2_ = NULL;
+ gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+ gint _tmp5_ = 0;
+ gchar* _tmp6_ = NULL;
+#line 2214 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = tag;
+#line 2214 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = tag_get_user_visible_name (_tmp2_);
+#line 2214 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 2214 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = count;
+#line 2214 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = resources_tag_photos_label (_tmp4_, _tmp5_);
+#line 2214 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp0_);
+#line 2214 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _tmp6_;
+#line 2214 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp4_);
+#line 20035 "Commands.c"
+ } else {
+ Tag* _tmp7_ = NULL;
+ gchar* _tmp8_ = NULL;
+ gchar* _tmp9_ = NULL;
+ gint _tmp10_ = 0;
+ gchar* _tmp11_ = NULL;
+#line 2215 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = tag;
+#line 2215 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = tag_get_user_visible_name (_tmp7_);
+#line 2215 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _tmp8_;
+#line 2215 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = count;
+#line 2215 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = resources_untag_photos_label (_tmp9_, _tmp10_);
+#line 2215 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp0_);
+#line 2215 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _tmp11_;
+#line 2215 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp9_);
+#line 20058 "Commands.c"
+ }
+#line 2213 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = tag;
+#line 2213 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = tag;
+#line 2213 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = data_object_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, TYPE_DATA_OBJECT, DataObject));
+#line 2213 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _tmp14_;
+#line 2213 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (TagUntagPhotosCommand*) simple_proxyable_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, TYPE_PROXYABLE, Proxyable), _tmp0_, _tmp15_);
+#line 2213 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp15_);
+#line 2218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = sources;
+#line 2218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = _g_object_ref0 (_tmp16_);
+#line 2218 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->sources);
+#line 2218 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->sources = _tmp17_;
+#line 2219 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = attach;
+#line 2219 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->attach = _tmp18_;
+#line 2221 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = library_photo_global;
+#line 2221 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, TYPE_SOURCE_COLLECTION, SourceCollection), "item-destroyed", (GCallback) _tag_untag_photos_command_on_source_destroyed_source_collection_item_destroyed, self, 0);
+#line 2222 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = video_global;
+#line 2222 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, TYPE_SOURCE_COLLECTION, SourceCollection), "item-destroyed", (GCallback) _tag_untag_photos_command_on_source_destroyed_source_collection_item_destroyed, self, 0);
+#line 2212 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp0_);
+#line 2212 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 20096 "Commands.c"
+}
+
+
+TagUntagPhotosCommand* tag_untag_photos_command_new (Tag* tag, GeeCollection* sources, gint count, gboolean attach) {
+#line 2212 "/home/jens/Source/shotwell/src/Commands.vala"
+ return tag_untag_photos_command_construct (TYPE_TAG_UNTAG_PHOTOS_COMMAND, tag, sources, count, attach);
+#line 20103 "Commands.c"
+}
+
+
+static void tag_untag_photos_command_real_execute_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ TagUntagPhotosCommand * self;
+ gboolean _tmp0_ = FALSE;
+#line 2230 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_TAG_UNTAG_PHOTOS_COMMAND, TagUntagPhotosCommand);
+#line 2230 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 2231 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->attach;
+#line 2231 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_) {
+#line 20118 "Commands.c"
+ DataSource* _tmp1_ = NULL;
+#line 2232 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = source;
+#line 2232 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_untag_photos_command_do_attach (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_TAG, Tag));
+#line 20124 "Commands.c"
+ } else {
+ DataSource* _tmp2_ = NULL;
+#line 2234 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = source;
+#line 2234 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_untag_photos_command_do_detach (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_TAG, Tag));
+#line 20131 "Commands.c"
+ }
+}
+
+
+static void tag_untag_photos_command_real_undo_on_source (SimpleProxyableCommand* base, DataSource* source) {
+ TagUntagPhotosCommand * self;
+ gboolean _tmp0_ = FALSE;
+#line 2237 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_TAG_UNTAG_PHOTOS_COMMAND, TagUntagPhotosCommand);
+#line 2237 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 2238 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->attach;
+#line 2238 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_) {
+#line 20147 "Commands.c"
+ DataSource* _tmp1_ = NULL;
+#line 2239 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = source;
+#line 2239 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_untag_photos_command_do_detach (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_TAG, Tag));
+#line 20153 "Commands.c"
+ } else {
+ DataSource* _tmp2_ = NULL;
+#line 2241 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = source;
+#line 2241 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_untag_photos_command_do_attach (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_TAG, Tag));
+#line 20160 "Commands.c"
+ }
+}
+
+
+static void tag_untag_photos_command_do_attach (TagUntagPhotosCommand* self, Tag* tag) {
+ GeeMultiMap* _tmp0_ = NULL;
+#line 2244 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_TAG_UNTAG_PHOTOS_COMMAND (self));
+#line 2244 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_TAG (tag));
+#line 2246 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->detached_from;
+#line 2246 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_ == NULL) {
+#line 20175 "Commands.c"
+ Tag* _tmp1_ = NULL;
+ GeeCollection* _tmp2_ = NULL;
+ GeeArrayList* _tmp3_ = NULL;
+ Tag* curr_tmp = NULL;
+ Tag* _tmp4_ = NULL;
+ Tag* _tmp5_ = NULL;
+#line 2247 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = tag;
+#line 2247 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->sources;
+#line 2247 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach_many (_tmp1_, _tmp2_);
+#line 2249 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_array_list_new (TYPE_TAG, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL, NULL);
+#line 2249 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->attached_to);
+#line 2249 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->attached_to = G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_LIST, GeeList);
+#line 2251 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = tag;
+#line 2251 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _g_object_ref0 (_tmp4_);
+#line 2251 "/home/jens/Source/shotwell/src/Commands.vala"
+ curr_tmp = _tmp5_;
+#line 2253 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 20202 "Commands.c"
+ Tag* _tmp6_ = NULL;
+ GeeList* _tmp7_ = NULL;
+ Tag* _tmp8_ = NULL;
+ Tag* _tmp9_ = NULL;
+ Tag* _tmp10_ = NULL;
+#line 2253 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = curr_tmp;
+#line 2253 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp6_ != NULL)) {
+#line 2253 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 20214 "Commands.c"
+ }
+#line 2254 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->attached_to;
+#line 2254 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = curr_tmp;
+#line 2254 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_COLLECTION, GeeCollection), _tmp8_);
+#line 2255 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = curr_tmp;
+#line 2255 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = tag_get_hierarchical_parent (_tmp9_);
+#line 2255 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (curr_tmp);
+#line 2255 "/home/jens/Source/shotwell/src/Commands.vala"
+ curr_tmp = _tmp10_;
+#line 20230 "Commands.c"
+ }
+#line 2258 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (curr_tmp);
+#line 2258 "/home/jens/Source/shotwell/src/Commands.vala"
+ return;
+#line 20236 "Commands.c"
+ }
+ {
+ GeeIterator* _detached_tag_it = NULL;
+ GeeMultiMap* _tmp11_ = NULL;
+ GeeMultiSet* _tmp12_ = NULL;
+ GeeMultiSet* _tmp13_ = NULL;
+ GeeIterator* _tmp14_ = NULL;
+ GeeIterator* _tmp15_ = NULL;
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = self->priv->detached_from;
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = gee_multi_map_get_all_keys (_tmp11_);
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _tmp12_;
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _tmp14_;
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp13_);
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _detached_tag_it = _tmp15_;
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 20261 "Commands.c"
+ GeeIterator* _tmp16_ = NULL;
+ gboolean _tmp17_ = FALSE;
+ Tag* detached_tag = NULL;
+ GeeIterator* _tmp18_ = NULL;
+ gpointer _tmp19_ = NULL;
+ Tag* _tmp20_ = NULL;
+ GeeMultiMap* _tmp21_ = NULL;
+ Tag* _tmp22_ = NULL;
+ GeeCollection* _tmp23_ = NULL;
+ GeeCollection* _tmp24_ = NULL;
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _detached_tag_it;
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = gee_iterator_next (_tmp16_);
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp17_) {
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 20280 "Commands.c"
+ }
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = _detached_tag_it;
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = gee_iterator_get (_tmp18_);
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ detached_tag = (Tag*) _tmp19_;
+#line 2263 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = detached_tag;
+#line 2263 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = self->priv->detached_from;
+#line 2263 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = detached_tag;
+#line 2263 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = gee_multi_map_get (_tmp21_, _tmp22_);
+#line 2263 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = _tmp23_;
+#line 2263 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_attach_many (_tmp20_, _tmp24_);
+#line 2263 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp24_);
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (detached_tag);
+#line 20304 "Commands.c"
+ }
+#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_detached_tag_it);
+#line 20308 "Commands.c"
+ }
+#line 2265 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->detached_from);
+#line 2265 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->detached_from = NULL;
+#line 2266 "/home/jens/Source/shotwell/src/Commands.vala"
+ simple_proxyable_command_clear_added_proxies (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SIMPLE_PROXYABLE_COMMAND, SimpleProxyableCommand));
+#line 20316 "Commands.c"
+}
+
+
+static void tag_untag_photos_command_do_detach (TagUntagPhotosCommand* self, Tag* tag) {
+ GeeList* _tmp0_ = NULL;
+#line 2269 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_TAG_UNTAG_PHOTOS_COMMAND (self));
+#line 2269 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_TAG (tag));
+#line 2270 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->attached_to;
+#line 2270 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp0_ == NULL) {
+#line 20330 "Commands.c"
+ Tag* _tmp1_ = NULL;
+ GeeCollection* _tmp2_ = NULL;
+ GeeMultiMap* _tmp3_ = NULL;
+ GeeMultiMap* _tmp4_ = NULL;
+ GeeSet* _tmp5_ = NULL;
+ GeeSet* _tmp6_ = NULL;
+#line 2274 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = tag;
+#line 2274 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->sources;
+#line 2274 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = tag_detach_many (_tmp1_, _tmp2_);
+#line 2274 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->detached_from);
+#line 2274 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->detached_from = _tmp3_;
+#line 2278 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->detached_from;
+#line 2278 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_multi_map_get_keys (_tmp4_);
+#line 2278 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 2278 "/home/jens/Source/shotwell/src/Commands.vala"
+ simple_proxyable_command_add_proxyables (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_SIMPLE_PROXYABLE_COMMAND, SimpleProxyableCommand), G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2278 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp6_);
+#line 20357 "Commands.c"
+ } else {
+ {
+ GeeList* _t_list = NULL;
+ GeeList* _tmp7_ = NULL;
+ GeeList* _tmp8_ = NULL;
+ gint _t_size = 0;
+ GeeList* _tmp9_ = NULL;
+ gint _tmp10_ = 0;
+ gint _tmp11_ = 0;
+ gint _t_index = 0;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->attached_to;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _g_object_ref0 (_tmp7_);
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_list = _tmp8_;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _t_list;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _tmp10_;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_size = _tmp11_;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_index = -1;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 20386 "Commands.c"
+ gint _tmp12_ = 0;
+ gint _tmp13_ = 0;
+ gint _tmp14_ = 0;
+ Tag* t = NULL;
+ GeeList* _tmp15_ = NULL;
+ gint _tmp16_ = 0;
+ gpointer _tmp17_ = NULL;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = _t_index;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _t_index = _tmp12_ + 1;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _t_index;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _t_size;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!(_tmp13_ < _tmp14_)) {
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 20406 "Commands.c"
+ }
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = _t_list;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = _t_index;
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = gee_list_get (_tmp15_, _tmp16_);
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ t = (Tag*) _tmp17_;
+#line 20416 "Commands.c"
+ {
+ GeeIterator* _ms_it = NULL;
+ GeeCollection* _tmp18_ = NULL;
+ GeeIterator* _tmp19_ = NULL;
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = self->priv->sources;
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ _ms_it = _tmp19_;
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 20429 "Commands.c"
+ GeeIterator* _tmp20_ = NULL;
+ gboolean _tmp21_ = FALSE;
+ MediaSource* ms = NULL;
+ GeeIterator* _tmp22_ = NULL;
+ gpointer _tmp23_ = NULL;
+ Tag* _tmp24_ = NULL;
+ MediaSource* _tmp25_ = NULL;
+ gint _tmp26_ = 0;
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = _ms_it;
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = gee_iterator_next (_tmp20_);
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp21_) {
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 20446 "Commands.c"
+ }
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = _ms_it;
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = gee_iterator_get (_tmp22_);
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ ms = (MediaSource*) _tmp23_;
+#line 2283 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = t;
+#line 2283 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = ms;
+#line 2283 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = tag_get_attachment_count (_tmp24_, _tmp25_);
+#line 2283 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp26_ < 2) {
+#line 20462 "Commands.c"
+ Tag* _tmp27_ = NULL;
+ MediaSource* _tmp28_ = NULL;
+ GeeList* _tmp29_ = NULL;
+ GeeList* _tmp30_ = NULL;
+#line 2285 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp27_ = t;
+#line 2285 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp28_ = ms;
+#line 2285 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp29_ = tag_detach (_tmp27_, _tmp28_);
+#line 2285 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp30_ = _tmp29_;
+#line 2285 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp30_);
+#line 20477 "Commands.c"
+ }
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (ms);
+#line 20481 "Commands.c"
+ }
+#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_ms_it);
+#line 20485 "Commands.c"
+ }
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (t);
+#line 20489 "Commands.c"
+ }
+#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_t_list);
+#line 20493 "Commands.c"
+ }
+ }
+}
+
+
+static void tag_untag_photos_command_on_source_destroyed (TagUntagPhotosCommand* self, DataSource* source) {
+ DataSource* _tmp0_ = NULL;
+ gchar* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ GeeCollection* _tmp3_ = NULL;
+ DataSource* _tmp4_ = NULL;
+ gboolean _tmp5_ = FALSE;
+#line 2292 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_TAG_UNTAG_PHOTOS_COMMAND (self));
+#line 2292 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 2293 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 2293 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = data_object_to_string (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_OBJECT, DataObject));
+#line 2293 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 2293 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_debug ("Commands.vala:2293: on_source_destroyed: %s", _tmp2_);
+#line 2293 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp2_);
+#line 2294 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->sources;
+#line 2294 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = source;
+#line 2294 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_collection_contains (_tmp3_, G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 2294 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp5_) {
+#line 20528 "Commands.c"
+ CommandManager* _tmp6_ = NULL;
+ CommandManager* _tmp7_ = NULL;
+#line 2295 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 2295 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _tmp6_;
+#line 2295 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp7_);
+#line 2295 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp7_);
+#line 20539 "Commands.c"
+ }
+}
+
+
+static void tag_untag_photos_command_class_init (TagUntagPhotosCommandClass * klass) {
+#line 2206 "/home/jens/Source/shotwell/src/Commands.vala"
+ tag_untag_photos_command_parent_class = g_type_class_peek_parent (klass);
+#line 2206 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (TagUntagPhotosCommandPrivate));
+#line 2206 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->execute_on_source = tag_untag_photos_command_real_execute_on_source;
+#line 2206 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((SimpleProxyableCommandClass *) klass)->undo_on_source = tag_untag_photos_command_real_undo_on_source;
+#line 2206 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = tag_untag_photos_command_finalize;
+#line 20555 "Commands.c"
+}
+
+
+static void tag_untag_photos_command_instance_init (TagUntagPhotosCommand * self) {
+#line 2206 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = TAG_UNTAG_PHOTOS_COMMAND_GET_PRIVATE (self);
+#line 2209 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->detached_from = NULL;
+#line 2210 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->attached_to = NULL;
+#line 20566 "Commands.c"
+}
+
+
+static void tag_untag_photos_command_finalize (GObject* obj) {
+ TagUntagPhotosCommand * self;
+ LibraryPhotoSourceCollection* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+ VideoSourceCollection* _tmp2_ = NULL;
+ guint _tmp3_ = 0U;
+#line 2206 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_TAG_UNTAG_PHOTOS_COMMAND, TagUntagPhotosCommand);
+#line 2226 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = library_photo_global;
+#line 2226 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("item-destroyed", TYPE_SOURCE_COLLECTION, &_tmp1_, NULL, FALSE);
+#line 2226 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_SOURCE_COLLECTION, SourceCollection), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _tag_untag_photos_command_on_source_destroyed_source_collection_item_destroyed, self);
+#line 2227 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = video_global;
+#line 2227 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("item-destroyed", TYPE_SOURCE_COLLECTION, &_tmp3_, NULL, FALSE);
+#line 2227 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_SOURCE_COLLECTION, SourceCollection), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp3_, 0, NULL, (GCallback) _tag_untag_photos_command_on_source_destroyed_source_collection_item_destroyed, self);
+#line 2207 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->sources);
+#line 2209 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->detached_from);
+#line 2210 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->attached_to);
+#line 2206 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (tag_untag_photos_command_parent_class)->finalize (obj);
+#line 20598 "Commands.c"
+}
+
+
+GType tag_untag_photos_command_get_type (void) {
+ static volatile gsize tag_untag_photos_command_type_id__volatile = 0;
+ if (g_once_init_enter (&tag_untag_photos_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (TagUntagPhotosCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) tag_untag_photos_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TagUntagPhotosCommand), 0, (GInstanceInitFunc) tag_untag_photos_command_instance_init, NULL };
+ GType tag_untag_photos_command_type_id;
+ tag_untag_photos_command_type_id = g_type_register_static (TYPE_SIMPLE_PROXYABLE_COMMAND, "TagUntagPhotosCommand", &g_define_type_info, 0);
+ g_once_init_leave (&tag_untag_photos_command_type_id__volatile, tag_untag_photos_command_type_id);
+ }
+ return tag_untag_photos_command_type_id__volatile;
+}
+
+
+RenameSavedSearchCommand* rename_saved_search_command_construct (GType object_type, SavedSearch* search, const gchar* new_name) {
+ RenameSavedSearchCommand * self = NULL;
+ SavedSearch* _tmp0_ = NULL;
+ SavedSearch* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ gchar* _tmp3_ = NULL;
+ const gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+ gchar* _tmp6_ = NULL;
+ SavedSearch* _tmp7_ = NULL;
+ gchar* _tmp8_ = NULL;
+ gchar* _tmp9_ = NULL;
+ SavedSearch* _tmp10_ = NULL;
+ SavedSearch* _tmp11_ = NULL;
+ SavedSearch* _tmp12_ = NULL;
+ gchar* _tmp13_ = NULL;
+ const gchar* _tmp14_ = NULL;
+ gchar* _tmp15_ = NULL;
+#line 2304 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_SAVED_SEARCH (search), NULL);
+#line 2304 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (new_name != NULL, NULL);
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = search;
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = search;
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = data_object_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_DATA_OBJECT, DataObject));
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = new_name;
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = resources_rename_search_label (_tmp3_, _tmp4_);
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = search;
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = data_object_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_DATA_OBJECT, DataObject));
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _tmp8_;
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (RenameSavedSearchCommand*) single_data_source_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_SOURCE, DataSource), _tmp6_, _tmp9_);
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp9_);
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp6_);
+#line 2305 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp3_);
+#line 2307 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = search;
+#line 2307 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _g_object_ref0 (_tmp10_);
+#line 2307 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->search);
+#line 2307 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->search = _tmp11_;
+#line 2308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = search;
+#line 2308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = data_object_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, TYPE_DATA_OBJECT, DataObject));
+#line 2308 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_name);
+#line 2308 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->old_name = _tmp13_;
+#line 2309 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = new_name;
+#line 2309 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = g_strdup (_tmp14_);
+#line 2309 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_name);
+#line 2309 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->new_name = _tmp15_;
+#line 2304 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 20690 "Commands.c"
+}
+
+
+RenameSavedSearchCommand* rename_saved_search_command_new (SavedSearch* search, const gchar* new_name) {
+#line 2304 "/home/jens/Source/shotwell/src/Commands.vala"
+ return rename_saved_search_command_construct (TYPE_RENAME_SAVED_SEARCH_COMMAND, search, new_name);
+#line 20697 "Commands.c"
+}
+
+
+static void rename_saved_search_command_real_execute (Command* base) {
+ RenameSavedSearchCommand * self;
+ SavedSearch* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gboolean _tmp2_ = FALSE;
+#line 2312 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_RENAME_SAVED_SEARCH_COMMAND, RenameSavedSearchCommand);
+#line 2313 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->search;
+#line 2313 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->new_name;
+#line 2313 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = saved_search_rename (_tmp0_, _tmp1_);
+#line 2313 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp2_) {
+#line 20716 "Commands.c"
+ const gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+#line 2314 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->new_name;
+#line 2314 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = resources_rename_search_exists_message (_tmp3_);
+#line 2314 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 2314 "/home/jens/Source/shotwell/src/Commands.vala"
+ app_window_error_message (_tmp5_, NULL);
+#line 2314 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp5_);
+#line 20730 "Commands.c"
+ }
+}
+
+
+static void rename_saved_search_command_real_undo (Command* base) {
+ RenameSavedSearchCommand * self;
+ SavedSearch* _tmp0_ = NULL;
+ const gchar* _tmp1_ = NULL;
+ gboolean _tmp2_ = FALSE;
+#line 2317 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_RENAME_SAVED_SEARCH_COMMAND, RenameSavedSearchCommand);
+#line 2318 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->search;
+#line 2318 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = self->priv->old_name;
+#line 2318 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = saved_search_rename (_tmp0_, _tmp1_);
+#line 2318 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp2_) {
+#line 20750 "Commands.c"
+ const gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+#line 2319 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = self->priv->old_name;
+#line 2319 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = resources_rename_search_exists_message (_tmp3_);
+#line 2319 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 2319 "/home/jens/Source/shotwell/src/Commands.vala"
+ app_window_error_message (_tmp5_, NULL);
+#line 2319 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp5_);
+#line 20764 "Commands.c"
+ }
+}
+
+
+static void rename_saved_search_command_class_init (RenameSavedSearchCommandClass * klass) {
+#line 2299 "/home/jens/Source/shotwell/src/Commands.vala"
+ rename_saved_search_command_parent_class = g_type_class_peek_parent (klass);
+#line 2299 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (RenameSavedSearchCommandPrivate));
+#line 2299 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = rename_saved_search_command_real_execute;
+#line 2299 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = rename_saved_search_command_real_undo;
+#line 2299 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = rename_saved_search_command_finalize;
+#line 20780 "Commands.c"
+}
+
+
+static void rename_saved_search_command_instance_init (RenameSavedSearchCommand * self) {
+#line 2299 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = RENAME_SAVED_SEARCH_COMMAND_GET_PRIVATE (self);
+#line 20787 "Commands.c"
+}
+
+
+static void rename_saved_search_command_finalize (GObject* obj) {
+ RenameSavedSearchCommand * self;
+#line 2299 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_RENAME_SAVED_SEARCH_COMMAND, RenameSavedSearchCommand);
+#line 2300 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->search);
+#line 2301 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->old_name);
+#line 2302 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (self->priv->new_name);
+#line 2299 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (rename_saved_search_command_parent_class)->finalize (obj);
+#line 20803 "Commands.c"
+}
+
+
+GType rename_saved_search_command_get_type (void) {
+ static volatile gsize rename_saved_search_command_type_id__volatile = 0;
+ if (g_once_init_enter (&rename_saved_search_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (RenameSavedSearchCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) rename_saved_search_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RenameSavedSearchCommand), 0, (GInstanceInitFunc) rename_saved_search_command_instance_init, NULL };
+ GType rename_saved_search_command_type_id;
+ rename_saved_search_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "RenameSavedSearchCommand", &g_define_type_info, 0);
+ g_once_init_leave (&rename_saved_search_command_type_id__volatile, rename_saved_search_command_type_id);
+ }
+ return rename_saved_search_command_type_id__volatile;
+}
+
+
+DeleteSavedSearchCommand* delete_saved_search_command_construct (GType object_type, SavedSearch* search) {
+ DeleteSavedSearchCommand * self = NULL;
+ SavedSearch* _tmp0_ = NULL;
+ SavedSearch* _tmp1_ = NULL;
+ gchar* _tmp2_ = NULL;
+ gchar* _tmp3_ = NULL;
+ gchar* _tmp4_ = NULL;
+ gchar* _tmp5_ = NULL;
+ SavedSearch* _tmp6_ = NULL;
+ gchar* _tmp7_ = NULL;
+ gchar* _tmp8_ = NULL;
+ SavedSearch* _tmp9_ = NULL;
+ SavedSearch* _tmp10_ = NULL;
+#line 2326 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_SAVED_SEARCH (search), NULL);
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = search;
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = search;
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = data_object_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_DATA_OBJECT, DataObject));
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp2_;
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = resources_delete_search_label (_tmp3_);
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = search;
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = data_object_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_DATA_OBJECT, DataObject));
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tmp7_;
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (DeleteSavedSearchCommand*) single_data_source_command_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_DATA_SOURCE, DataSource), _tmp5_, _tmp8_);
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp8_);
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp5_);
+#line 2327 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_free0 (_tmp3_);
+#line 2329 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = search;
+#line 2329 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _g_object_ref0 (_tmp9_);
+#line 2329 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->search);
+#line 2329 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->search = _tmp10_;
+#line 2326 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 20870 "Commands.c"
+}
+
+
+DeleteSavedSearchCommand* delete_saved_search_command_new (SavedSearch* search) {
+#line 2326 "/home/jens/Source/shotwell/src/Commands.vala"
+ return delete_saved_search_command_construct (TYPE_DELETE_SAVED_SEARCH_COMMAND, search);
+#line 20877 "Commands.c"
+}
+
+
+static void delete_saved_search_command_real_execute (Command* base) {
+ DeleteSavedSearchCommand * self;
+ SavedSearchTable* _tmp0_ = NULL;
+ SavedSearchTable* _tmp1_ = NULL;
+ SavedSearch* _tmp2_ = NULL;
+#line 2332 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_DELETE_SAVED_SEARCH_COMMAND, DeleteSavedSearchCommand);
+#line 2333 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = saved_search_table_get_instance ();
+#line 2333 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _tmp0_;
+#line 2333 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->search;
+#line 2333 "/home/jens/Source/shotwell/src/Commands.vala"
+ saved_search_table_remove (_tmp1_, _tmp2_);
+#line 2333 "/home/jens/Source/shotwell/src/Commands.vala"
+ _saved_search_table_unref0 (_tmp1_);
+#line 20898 "Commands.c"
+}
+
+
+static void delete_saved_search_command_real_undo (Command* base) {
+ DeleteSavedSearchCommand * self;
+ SavedSearch* _tmp0_ = NULL;
+#line 2336 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_DELETE_SAVED_SEARCH_COMMAND, DeleteSavedSearchCommand);
+#line 2337 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->search;
+#line 2337 "/home/jens/Source/shotwell/src/Commands.vala"
+ saved_search_reconstitute (_tmp0_);
+#line 20911 "Commands.c"
+}
+
+
+static void delete_saved_search_command_class_init (DeleteSavedSearchCommandClass * klass) {
+#line 2323 "/home/jens/Source/shotwell/src/Commands.vala"
+ delete_saved_search_command_parent_class = g_type_class_peek_parent (klass);
+#line 2323 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (DeleteSavedSearchCommandPrivate));
+#line 2323 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = delete_saved_search_command_real_execute;
+#line 2323 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = delete_saved_search_command_real_undo;
+#line 2323 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = delete_saved_search_command_finalize;
+#line 20926 "Commands.c"
+}
+
+
+static void delete_saved_search_command_instance_init (DeleteSavedSearchCommand * self) {
+#line 2323 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = DELETE_SAVED_SEARCH_COMMAND_GET_PRIVATE (self);
+#line 20933 "Commands.c"
+}
+
+
+static void delete_saved_search_command_finalize (GObject* obj) {
+ DeleteSavedSearchCommand * self;
+#line 2323 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_DELETE_SAVED_SEARCH_COMMAND, DeleteSavedSearchCommand);
+#line 2324 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->search);
+#line 2323 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (delete_saved_search_command_parent_class)->finalize (obj);
+#line 20945 "Commands.c"
+}
+
+
+GType delete_saved_search_command_get_type (void) {
+ static volatile gsize delete_saved_search_command_type_id__volatile = 0;
+ if (g_once_init_enter (&delete_saved_search_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (DeleteSavedSearchCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) delete_saved_search_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (DeleteSavedSearchCommand), 0, (GInstanceInitFunc) delete_saved_search_command_instance_init, NULL };
+ GType delete_saved_search_command_type_id;
+ delete_saved_search_command_type_id = g_type_register_static (TYPE_SINGLE_DATA_SOURCE_COMMAND, "DeleteSavedSearchCommand", &g_define_type_info, 0);
+ g_once_init_leave (&delete_saved_search_command_type_id__volatile, delete_saved_search_command_type_id);
+ }
+ return delete_saved_search_command_type_id__volatile;
+}
+
+
+static void _trash_untrash_photos_command_on_photo_destroyed_source_collection_item_destroyed (SourceCollection* _sender, DataSource* source, gpointer self) {
+#line 2358 "/home/jens/Source/shotwell/src/Commands.vala"
+ trash_untrash_photos_command_on_photo_destroyed ((TrashUntrashPhotosCommand*) self, source);
+#line 20964 "Commands.c"
+}
+
+
+TrashUntrashPhotosCommand* trash_untrash_photos_command_construct (GType object_type, GeeCollection* sources, gboolean to_trash) {
+ TrashUntrashPhotosCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ gboolean _tmp1_ = FALSE;
+ const gchar* _tmp4_ = NULL;
+ gboolean _tmp5_ = FALSE;
+ GeeCollection* _tmp8_ = NULL;
+ GeeCollection* _tmp9_ = NULL;
+ gboolean _tmp10_ = FALSE;
+ LibraryPhotoSourceCollection* _tmp11_ = NULL;
+ VideoSourceCollection* _tmp12_ = NULL;
+#line 2345 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_COLLECTION (sources), NULL);
+#line 2347 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = to_trash;
+#line 2347 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_) {
+#line 20985 "Commands.c"
+ const gchar* _tmp2_ = NULL;
+#line 2347 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _ ("Move Photos to Trash");
+#line 2347 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _tmp2_;
+#line 20991 "Commands.c"
+ } else {
+ const gchar* _tmp3_ = NULL;
+#line 2347 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _ ("Restore Photos from Trash");
+#line 2347 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _tmp3_;
+#line 20998 "Commands.c"
+ }
+#line 2348 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = to_trash;
+#line 2348 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp5_) {
+#line 21004 "Commands.c"
+ const gchar* _tmp6_ = NULL;
+#line 2348 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _ ("Move the photos to the Shotwell trash");
+#line 2348 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp6_;
+#line 21010 "Commands.c"
+ } else {
+ const gchar* _tmp7_ = NULL;
+#line 2348 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = _ ("Restore the photos back to the Shotwell library");
+#line 2348 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp7_;
+#line 21017 "Commands.c"
+ }
+#line 2346 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (TrashUntrashPhotosCommand*) page_command_construct (object_type, _tmp0_, _tmp4_);
+#line 2350 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = sources;
+#line 2350 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = _g_object_ref0 (_tmp8_);
+#line 2350 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->sources);
+#line 2350 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->sources = _tmp9_;
+#line 2351 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = to_trash;
+#line 2351 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->to_trash = _tmp10_;
+#line 2353 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = library_photo_global;
+#line 2353 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_SOURCE_COLLECTION, SourceCollection), "item-destroyed", (GCallback) _trash_untrash_photos_command_on_photo_destroyed_source_collection_item_destroyed, self, 0);
+#line 2354 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = video_global;
+#line 2354 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, TYPE_SOURCE_COLLECTION, SourceCollection), "item-destroyed", (GCallback) _trash_untrash_photos_command_on_photo_destroyed_source_collection_item_destroyed, self, 0);
+#line 2345 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 21043 "Commands.c"
+}
+
+
+TrashUntrashPhotosCommand* trash_untrash_photos_command_new (GeeCollection* sources, gboolean to_trash) {
+#line 2345 "/home/jens/Source/shotwell/src/Commands.vala"
+ return trash_untrash_photos_command_construct (TYPE_TRASH_UNTRASH_PHOTOS_COMMAND, sources, to_trash);
+#line 21050 "Commands.c"
+}
+
+
+static ProgressDialog* trash_untrash_photos_command_get_progress_dialog (TrashUntrashPhotosCommand* self, gboolean to_trash) {
+ ProgressDialog* result = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ gint _tmp1_ = 0;
+ gint _tmp2_ = 0;
+ const gchar* _tmp3_ = NULL;
+ gboolean _tmp4_ = FALSE;
+ ProgressDialog* dialog = NULL;
+ AppWindow* _tmp7_ = NULL;
+ AppWindow* _tmp8_ = NULL;
+ ProgressDialog* _tmp9_ = NULL;
+ ProgressDialog* _tmp10_ = NULL;
+ ProgressDialog* _tmp11_ = NULL;
+ GeeCollection* _tmp12_ = NULL;
+ gint _tmp13_ = 0;
+ gint _tmp14_ = 0;
+ gint _tmp15_ = 0;
+#line 2362 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (IS_TRASH_UNTRASH_PHOTOS_COMMAND (self), NULL);
+#line 2363 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->sources;
+#line 2363 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_collection_get_size (_tmp0_);
+#line 2363 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 2363 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ <= 5) {
+#line 2364 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = NULL;
+#line 2364 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 21085 "Commands.c"
+ }
+#line 2367 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = to_trash;
+#line 2367 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_) {
+#line 21091 "Commands.c"
+ const gchar* _tmp5_ = NULL;
+#line 2367 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _ ("Moving Photos to Trash");
+#line 2367 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp5_;
+#line 21097 "Commands.c"
+ } else {
+ const gchar* _tmp6_ = NULL;
+#line 2367 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _ ("Restoring Photos From Trash");
+#line 2367 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _tmp6_;
+#line 21104 "Commands.c"
+ }
+#line 2366 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = app_window_get_instance ();
+#line 2366 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tmp7_;
+#line 2366 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = progress_dialog_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, gtk_window_get_type (), GtkWindow), _tmp3_, NULL);
+#line 2366 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_object_ref_sink (_tmp9_);
+#line 2366 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_;
+#line 2366 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_tmp8_);
+#line 2366 "/home/jens/Source/shotwell/src/Commands.vala"
+ dialog = _tmp10_;
+#line 2368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = dialog;
+#line 2368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = self->priv->sources;
+#line 2368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = gee_collection_get_size (_tmp12_);
+#line 2368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _tmp13_;
+#line 2368 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = CLAMP (_tmp14_ / 5, 2, 10);
+#line 2368 "/home/jens/Source/shotwell/src/Commands.vala"
+ progress_dialog_update_display_every (_tmp11_, _tmp15_);
+#line 2370 "/home/jens/Source/shotwell/src/Commands.vala"
+ result = dialog;
+#line 2370 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 21136 "Commands.c"
+}
+
+
+static gboolean _progress_dialog_monitor_progress_monitor (guint64 current, guint64 total, gboolean do_event_loop, gpointer self) {
+ gboolean result;
+ result = progress_dialog_monitor ((ProgressDialog*) self, current, total, do_event_loop);
+#line 2378 "/home/jens/Source/shotwell/src/Commands.vala"
+ return result;
+#line 21145 "Commands.c"
+}
+
+
+static void trash_untrash_photos_command_real_execute (Command* base) {
+ TrashUntrashPhotosCommand * self;
+ ProgressDialog* dialog = NULL;
+ gboolean _tmp0_ = FALSE;
+ ProgressDialog* _tmp1_ = NULL;
+ ProgressMonitor monitor = NULL;
+ void* monitor_target = NULL;
+ GDestroyNotify monitor_target_destroy_notify = NULL;
+ ProgressDialog* _tmp2_ = NULL;
+ gboolean _tmp4_ = FALSE;
+ ProgressDialog* _tmp7_ = NULL;
+#line 2373 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_TRASH_UNTRASH_PHOTOS_COMMAND, TrashUntrashPhotosCommand);
+#line 2374 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->to_trash;
+#line 2374 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = trash_untrash_photos_command_get_progress_dialog (self, _tmp0_);
+#line 2374 "/home/jens/Source/shotwell/src/Commands.vala"
+ dialog = _tmp1_;
+#line 2376 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor = NULL;
+#line 2376 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target = NULL;
+#line 2376 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target_destroy_notify = NULL;
+#line 2377 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = dialog;
+#line 2377 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ != NULL) {
+#line 21178 "Commands.c"
+ ProgressDialog* _tmp3_ = NULL;
+#line 2378 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = dialog;
+#line 2378 "/home/jens/Source/shotwell/src/Commands.vala"
+ (monitor_target_destroy_notify == NULL) ? NULL : (monitor_target_destroy_notify (monitor_target), NULL);
+#line 2378 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor = NULL;
+#line 2378 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target = NULL;
+#line 2378 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target_destroy_notify = NULL;
+#line 2378 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor = _progress_dialog_monitor_progress_monitor;
+#line 2378 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target = g_object_ref (_tmp3_);
+#line 2378 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target_destroy_notify = g_object_unref;
+#line 21196 "Commands.c"
+ }
+#line 2380 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->to_trash;
+#line 2380 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_) {
+#line 21202 "Commands.c"
+ ProgressMonitor _tmp5_ = NULL;
+ void* _tmp5__target = NULL;
+#line 2381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = monitor;
+#line 2381 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5__target = monitor_target;
+#line 2381 "/home/jens/Source/shotwell/src/Commands.vala"
+ trash_untrash_photos_command_trash (self, _tmp5_, _tmp5__target);
+#line 21211 "Commands.c"
+ } else {
+ ProgressMonitor _tmp6_ = NULL;
+ void* _tmp6__target = NULL;
+#line 2383 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = monitor;
+#line 2383 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6__target = monitor_target;
+#line 2383 "/home/jens/Source/shotwell/src/Commands.vala"
+ trash_untrash_photos_command_untrash (self, _tmp6_, _tmp6__target);
+#line 21221 "Commands.c"
+ }
+#line 2385 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = dialog;
+#line 2385 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp7_ != NULL) {
+#line 21227 "Commands.c"
+ ProgressDialog* _tmp8_ = NULL;
+#line 2386 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = dialog;
+#line 2386 "/home/jens/Source/shotwell/src/Commands.vala"
+ progress_dialog_close (_tmp8_);
+#line 21233 "Commands.c"
+ }
+#line 2373 "/home/jens/Source/shotwell/src/Commands.vala"
+ (monitor_target_destroy_notify == NULL) ? NULL : (monitor_target_destroy_notify (monitor_target), NULL);
+#line 2373 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor = NULL;
+#line 2373 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target = NULL;
+#line 2373 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target_destroy_notify = NULL;
+#line 2373 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (dialog);
+#line 21245 "Commands.c"
+}
+
+
+static void trash_untrash_photos_command_real_undo (Command* base) {
+ TrashUntrashPhotosCommand * self;
+ ProgressDialog* dialog = NULL;
+ gboolean _tmp0_ = FALSE;
+ ProgressDialog* _tmp1_ = NULL;
+ ProgressMonitor monitor = NULL;
+ void* monitor_target = NULL;
+ GDestroyNotify monitor_target_destroy_notify = NULL;
+ ProgressDialog* _tmp2_ = NULL;
+ gboolean _tmp4_ = FALSE;
+ ProgressDialog* _tmp7_ = NULL;
+#line 2389 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_TRASH_UNTRASH_PHOTOS_COMMAND, TrashUntrashPhotosCommand);
+#line 2390 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->to_trash;
+#line 2390 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = trash_untrash_photos_command_get_progress_dialog (self, !_tmp0_);
+#line 2390 "/home/jens/Source/shotwell/src/Commands.vala"
+ dialog = _tmp1_;
+#line 2392 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor = NULL;
+#line 2392 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target = NULL;
+#line 2392 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target_destroy_notify = NULL;
+#line 2393 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = dialog;
+#line 2393 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ != NULL) {
+#line 21278 "Commands.c"
+ ProgressDialog* _tmp3_ = NULL;
+#line 2394 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = dialog;
+#line 2394 "/home/jens/Source/shotwell/src/Commands.vala"
+ (monitor_target_destroy_notify == NULL) ? NULL : (monitor_target_destroy_notify (monitor_target), NULL);
+#line 2394 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor = NULL;
+#line 2394 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target = NULL;
+#line 2394 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target_destroy_notify = NULL;
+#line 2394 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor = _progress_dialog_monitor_progress_monitor;
+#line 2394 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target = g_object_ref (_tmp3_);
+#line 2394 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target_destroy_notify = g_object_unref;
+#line 21296 "Commands.c"
+ }
+#line 2396 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = self->priv->to_trash;
+#line 2396 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_) {
+#line 21302 "Commands.c"
+ ProgressMonitor _tmp5_ = NULL;
+ void* _tmp5__target = NULL;
+#line 2397 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = monitor;
+#line 2397 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5__target = monitor_target;
+#line 2397 "/home/jens/Source/shotwell/src/Commands.vala"
+ trash_untrash_photos_command_untrash (self, _tmp5_, _tmp5__target);
+#line 21311 "Commands.c"
+ } else {
+ ProgressMonitor _tmp6_ = NULL;
+ void* _tmp6__target = NULL;
+#line 2399 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = monitor;
+#line 2399 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6__target = monitor_target;
+#line 2399 "/home/jens/Source/shotwell/src/Commands.vala"
+ trash_untrash_photos_command_trash (self, _tmp6_, _tmp6__target);
+#line 21321 "Commands.c"
+ }
+#line 2401 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = dialog;
+#line 2401 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp7_ != NULL) {
+#line 21327 "Commands.c"
+ ProgressDialog* _tmp8_ = NULL;
+#line 2402 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = dialog;
+#line 2402 "/home/jens/Source/shotwell/src/Commands.vala"
+ progress_dialog_close (_tmp8_);
+#line 21333 "Commands.c"
+ }
+#line 2389 "/home/jens/Source/shotwell/src/Commands.vala"
+ (monitor_target_destroy_notify == NULL) ? NULL : (monitor_target_destroy_notify (monitor_target), NULL);
+#line 2389 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor = NULL;
+#line 2389 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target = NULL;
+#line 2389 "/home/jens/Source/shotwell/src/Commands.vala"
+ monitor_target_destroy_notify = NULL;
+#line 2389 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (dialog);
+#line 21345 "Commands.c"
+}
+
+
+static void trash_untrash_photos_command_trash (TrashUntrashPhotosCommand* self, ProgressMonitor monitor, void* monitor_target) {
+ gint ctr = 0;
+ gint count = 0;
+ GeeCollection* _tmp0_ = NULL;
+ gint _tmp1_ = 0;
+ gint _tmp2_ = 0;
+ LibraryPhotoSourceCollection* _tmp3_ = NULL;
+ TransactionController* _tmp4_ = NULL;
+ TransactionController* _tmp5_ = NULL;
+ VideoSourceCollection* _tmp6_ = NULL;
+ TransactionController* _tmp7_ = NULL;
+ TransactionController* _tmp8_ = NULL;
+ LibraryPhotoSourceCollection* _tmp21_ = NULL;
+ TransactionController* _tmp22_ = NULL;
+ TransactionController* _tmp23_ = NULL;
+ VideoSourceCollection* _tmp24_ = NULL;
+ TransactionController* _tmp25_ = NULL;
+ TransactionController* _tmp26_ = NULL;
+#line 2405 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_TRASH_UNTRASH_PHOTOS_COMMAND (self));
+#line 2406 "/home/jens/Source/shotwell/src/Commands.vala"
+ ctr = 0;
+#line 2407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->sources;
+#line 2407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_collection_get_size (_tmp0_);
+#line 2407 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 2407 "/home/jens/Source/shotwell/src/Commands.vala"
+ count = _tmp2_;
+#line 2409 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = library_photo_global;
+#line 2409 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = media_source_collection_get_transaction_controller (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection));
+#line 2409 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 2409 "/home/jens/Source/shotwell/src/Commands.vala"
+ transaction_controller_begin (_tmp5_);
+#line 2410 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = video_global;
+#line 2410 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = media_source_collection_get_transaction_controller (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection));
+#line 2410 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tmp7_;
+#line 2410 "/home/jens/Source/shotwell/src/Commands.vala"
+ transaction_controller_begin (_tmp8_);
+#line 21395 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp9_ = NULL;
+ GeeIterator* _tmp10_ = NULL;
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->priv->sources;
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp10_;
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 21408 "Commands.c"
+ GeeIterator* _tmp11_ = NULL;
+ gboolean _tmp12_ = FALSE;
+ MediaSource* source = NULL;
+ GeeIterator* _tmp13_ = NULL;
+ gpointer _tmp14_ = NULL;
+ MediaSource* _tmp15_ = NULL;
+ ProgressMonitor _tmp16_ = NULL;
+ void* _tmp16__target = NULL;
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _source_it;
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = gee_iterator_next (_tmp11_);
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp12_) {
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 21425 "Commands.c"
+ }
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _source_it;
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = gee_iterator_get (_tmp13_);
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (MediaSource*) _tmp14_;
+#line 2413 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = source;
+#line 2413 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_trash (_tmp15_);
+#line 2414 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = monitor;
+#line 2414 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16__target = monitor_target;
+#line 2414 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp16_ != NULL) {
+#line 21443 "Commands.c"
+ ProgressMonitor _tmp17_ = NULL;
+ void* _tmp17__target = NULL;
+ gint _tmp18_ = 0;
+ gint _tmp19_ = 0;
+ gint _tmp20_ = 0;
+#line 2415 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = monitor;
+#line 2415 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17__target = monitor_target;
+#line 2415 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = ctr;
+#line 2415 "/home/jens/Source/shotwell/src/Commands.vala"
+ ctr = _tmp18_ + 1;
+#line 2415 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = ctr;
+#line 2415 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = count;
+#line 2415 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ ((guint64) _tmp19_, (guint64) _tmp20_, TRUE, _tmp17__target);
+#line 21463 "Commands.c"
+ }
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 21467 "Commands.c"
+ }
+#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 21471 "Commands.c"
+ }
+#line 2418 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = library_photo_global;
+#line 2418 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = media_source_collection_get_transaction_controller (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection));
+#line 2418 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _tmp22_;
+#line 2418 "/home/jens/Source/shotwell/src/Commands.vala"
+ transaction_controller_commit (_tmp23_);
+#line 2419 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = video_global;
+#line 2419 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = media_source_collection_get_transaction_controller (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection));
+#line 2419 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _tmp25_;
+#line 2419 "/home/jens/Source/shotwell/src/Commands.vala"
+ transaction_controller_commit (_tmp26_);
+#line 21489 "Commands.c"
+}
+
+
+static void trash_untrash_photos_command_untrash (TrashUntrashPhotosCommand* self, ProgressMonitor monitor, void* monitor_target) {
+ gint ctr = 0;
+ gint count = 0;
+ GeeCollection* _tmp0_ = NULL;
+ gint _tmp1_ = 0;
+ gint _tmp2_ = 0;
+ LibraryPhotoSourceCollection* _tmp3_ = NULL;
+ TransactionController* _tmp4_ = NULL;
+ TransactionController* _tmp5_ = NULL;
+ VideoSourceCollection* _tmp6_ = NULL;
+ TransactionController* _tmp7_ = NULL;
+ TransactionController* _tmp8_ = NULL;
+ LibraryPhotoSourceCollection* _tmp21_ = NULL;
+ TransactionController* _tmp22_ = NULL;
+ TransactionController* _tmp23_ = NULL;
+ VideoSourceCollection* _tmp24_ = NULL;
+ TransactionController* _tmp25_ = NULL;
+ TransactionController* _tmp26_ = NULL;
+#line 2422 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_TRASH_UNTRASH_PHOTOS_COMMAND (self));
+#line 2423 "/home/jens/Source/shotwell/src/Commands.vala"
+ ctr = 0;
+#line 2424 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->sources;
+#line 2424 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_collection_get_size (_tmp0_);
+#line 2424 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _tmp1_;
+#line 2424 "/home/jens/Source/shotwell/src/Commands.vala"
+ count = _tmp2_;
+#line 2426 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = library_photo_global;
+#line 2426 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = media_source_collection_get_transaction_controller (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection));
+#line 2426 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = _tmp4_;
+#line 2426 "/home/jens/Source/shotwell/src/Commands.vala"
+ transaction_controller_begin (_tmp5_);
+#line 2427 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = video_global;
+#line 2427 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = media_source_collection_get_transaction_controller (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection));
+#line 2427 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = _tmp7_;
+#line 2427 "/home/jens/Source/shotwell/src/Commands.vala"
+ transaction_controller_begin (_tmp8_);
+#line 21539 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp9_ = NULL;
+ GeeIterator* _tmp10_ = NULL;
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->priv->sources;
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp10_;
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 21552 "Commands.c"
+ GeeIterator* _tmp11_ = NULL;
+ gboolean _tmp12_ = FALSE;
+ MediaSource* source = NULL;
+ GeeIterator* _tmp13_ = NULL;
+ gpointer _tmp14_ = NULL;
+ MediaSource* _tmp15_ = NULL;
+ ProgressMonitor _tmp16_ = NULL;
+ void* _tmp16__target = NULL;
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = _source_it;
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = gee_iterator_next (_tmp11_);
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp12_) {
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 21569 "Commands.c"
+ }
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = _source_it;
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = gee_iterator_get (_tmp13_);
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (MediaSource*) _tmp14_;
+#line 2430 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = source;
+#line 2430 "/home/jens/Source/shotwell/src/Commands.vala"
+ media_source_untrash (_tmp15_);
+#line 2431 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = monitor;
+#line 2431 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16__target = monitor_target;
+#line 2431 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp16_ != NULL) {
+#line 21587 "Commands.c"
+ ProgressMonitor _tmp17_ = NULL;
+ void* _tmp17__target = NULL;
+ gint _tmp18_ = 0;
+ gint _tmp19_ = 0;
+ gint _tmp20_ = 0;
+#line 2432 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = monitor;
+#line 2432 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17__target = monitor_target;
+#line 2432 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp18_ = ctr;
+#line 2432 "/home/jens/Source/shotwell/src/Commands.vala"
+ ctr = _tmp18_ + 1;
+#line 2432 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp19_ = ctr;
+#line 2432 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp20_ = count;
+#line 2432 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ ((guint64) _tmp19_, (guint64) _tmp20_, TRUE, _tmp17__target);
+#line 21607 "Commands.c"
+ }
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 21611 "Commands.c"
+ }
+#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 21615 "Commands.c"
+ }
+#line 2435 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp21_ = library_photo_global;
+#line 2435 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp22_ = media_source_collection_get_transaction_controller (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection));
+#line 2435 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp23_ = _tmp22_;
+#line 2435 "/home/jens/Source/shotwell/src/Commands.vala"
+ transaction_controller_commit (_tmp23_);
+#line 2436 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp24_ = video_global;
+#line 2436 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp25_ = media_source_collection_get_transaction_controller (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection));
+#line 2436 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp26_ = _tmp25_;
+#line 2436 "/home/jens/Source/shotwell/src/Commands.vala"
+ transaction_controller_commit (_tmp26_);
+#line 21633 "Commands.c"
+}
+
+
+static void trash_untrash_photos_command_on_photo_destroyed (TrashUntrashPhotosCommand* self, DataSource* source) {
+ GeeCollection* _tmp0_ = NULL;
+ DataSource* _tmp1_ = NULL;
+ GeeCollection* _tmp2_ = NULL;
+ gint _tmp3_ = 0;
+ gint _tmp4_ = 0;
+#line 2439 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_TRASH_UNTRASH_PHOTOS_COMMAND (self));
+#line 2439 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 2442 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = self->priv->sources;
+#line 2442 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = source;
+#line 2442 "/home/jens/Source/shotwell/src/Commands.vala"
+ gee_collection_remove (_tmp0_, G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_MEDIA_SOURCE, MediaSource));
+#line 2446 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = self->priv->sources;
+#line 2446 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_collection_get_size (_tmp2_);
+#line 2446 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _tmp3_;
+#line 2446 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp4_ == 0) {
+#line 21661 "Commands.c"
+ CommandManager* _tmp5_ = NULL;
+ CommandManager* _tmp6_ = NULL;
+#line 2447 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = command_get_command_manager (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_COMMAND, Command));
+#line 2447 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = _tmp5_;
+#line 2447 "/home/jens/Source/shotwell/src/Commands.vala"
+ command_manager_reset (_tmp6_);
+#line 2447 "/home/jens/Source/shotwell/src/Commands.vala"
+ _command_manager_unref0 (_tmp6_);
+#line 21672 "Commands.c"
+ }
+}
+
+
+static void trash_untrash_photos_command_class_init (TrashUntrashPhotosCommandClass * klass) {
+#line 2341 "/home/jens/Source/shotwell/src/Commands.vala"
+ trash_untrash_photos_command_parent_class = g_type_class_peek_parent (klass);
+#line 2341 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (TrashUntrashPhotosCommandPrivate));
+#line 2341 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->execute = trash_untrash_photos_command_real_execute;
+#line 2341 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((CommandClass *) klass)->undo = trash_untrash_photos_command_real_undo;
+#line 2341 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = trash_untrash_photos_command_finalize;
+#line 21688 "Commands.c"
+}
+
+
+static void trash_untrash_photos_command_instance_init (TrashUntrashPhotosCommand * self) {
+#line 2341 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = TRASH_UNTRASH_PHOTOS_COMMAND_GET_PRIVATE (self);
+#line 21695 "Commands.c"
+}
+
+
+static void trash_untrash_photos_command_finalize (GObject* obj) {
+ TrashUntrashPhotosCommand * self;
+ LibraryPhotoSourceCollection* _tmp0_ = NULL;
+ guint _tmp1_ = 0U;
+ VideoSourceCollection* _tmp2_ = NULL;
+ guint _tmp3_ = 0U;
+#line 2341 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_TRASH_UNTRASH_PHOTOS_COMMAND, TrashUntrashPhotosCommand);
+#line 2358 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = library_photo_global;
+#line 2358 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("item-destroyed", TYPE_SOURCE_COLLECTION, &_tmp1_, NULL, FALSE);
+#line 2358 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_SOURCE_COLLECTION, SourceCollection), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _trash_untrash_photos_command_on_photo_destroyed_source_collection_item_destroyed, self);
+#line 2359 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = video_global;
+#line 2359 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_parse_name ("item-destroyed", TYPE_SOURCE_COLLECTION, &_tmp3_, NULL, FALSE);
+#line 2359 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_SOURCE_COLLECTION, SourceCollection), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp3_, 0, NULL, (GCallback) _trash_untrash_photos_command_on_photo_destroyed_source_collection_item_destroyed, self);
+#line 2342 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->sources);
+#line 2341 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (trash_untrash_photos_command_parent_class)->finalize (obj);
+#line 21723 "Commands.c"
+}
+
+
+GType trash_untrash_photos_command_get_type (void) {
+ static volatile gsize trash_untrash_photos_command_type_id__volatile = 0;
+ if (g_once_init_enter (&trash_untrash_photos_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (TrashUntrashPhotosCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) trash_untrash_photos_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TrashUntrashPhotosCommand), 0, (GInstanceInitFunc) trash_untrash_photos_command_instance_init, NULL };
+ GType trash_untrash_photos_command_type_id;
+ trash_untrash_photos_command_type_id = g_type_register_static (TYPE_PAGE_COMMAND, "TrashUntrashPhotosCommand", &g_define_type_info, 0);
+ g_once_init_leave (&trash_untrash_photos_command_type_id__volatile, trash_untrash_photos_command_type_id);
+ }
+ return trash_untrash_photos_command_type_id__volatile;
+}
+
+
+FlagUnflagCommand* flag_unflag_command_construct (GType object_type, GeeCollection* sources, gboolean flag) {
+ FlagUnflagCommand * self = NULL;
+ const gchar* _tmp0_ = NULL;
+ gboolean _tmp1_ = FALSE;
+ const gchar* _tmp4_ = NULL;
+ gboolean _tmp5_ = FALSE;
+ GeeCollection* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+ GeeCollection* _tmp8_ = NULL;
+ gint _tmp9_ = 0;
+ gint _tmp10_ = 0;
+#line 2461 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_val_if_fail (GEE_IS_COLLECTION (sources), NULL);
+#line 2463 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = flag;
+#line 2463 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp1_) {
+#line 21756 "Commands.c"
+ const gchar* _tmp2_ = NULL;
+#line 2463 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _ ("Flag");
+#line 2463 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _tmp2_;
+#line 21762 "Commands.c"
+ } else {
+ const gchar* _tmp3_ = NULL;
+#line 2463 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = _ ("Unflag");
+#line 2463 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = _tmp3_;
+#line 21769 "Commands.c"
+ }
+#line 2464 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = flag;
+#line 2464 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp5_) {
+#line 2464 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = FLAG_UNFLAG_COMMAND_FLAG_SELECTED_STRING;
+#line 21777 "Commands.c"
+ } else {
+#line 2464 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = FLAG_UNFLAG_COMMAND_UNFLAG_SELECTED_STRING;
+#line 21781 "Commands.c"
+ }
+#line 2462 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = sources;
+#line 2462 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = (FlagUnflagCommand*) multiple_data_source_at_once_command_construct (object_type, _tmp6_, _tmp0_, _tmp4_);
+#line 2466 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = flag;
+#line 2466 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->flag = _tmp7_;
+#line 2468 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = sources;
+#line 2468 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = gee_collection_get_size (_tmp8_);
+#line 2468 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = _tmp9_;
+#line 2468 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp10_ >= FLAG_UNFLAG_COMMAND_MIN_PROGRESS_BAR_THRESHOLD) {
+#line 21799 "Commands.c"
+ const gchar* _tmp11_ = NULL;
+ gboolean _tmp12_ = FALSE;
+ ProgressDialog* _tmp13_ = NULL;
+ ProgressDialog* _tmp14_ = NULL;
+#line 2470 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = flag;
+#line 2470 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp12_) {
+#line 2470 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = FLAG_UNFLAG_COMMAND_FLAG_PROGRESS;
+#line 21810 "Commands.c"
+ } else {
+#line 2470 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = FLAG_UNFLAG_COMMAND_UNFLAG_PROGRESS;
+#line 21814 "Commands.c"
+ }
+#line 2469 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = progress_dialog_new (NULL, _tmp11_, NULL);
+#line 2469 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_object_ref_sink (_tmp13_);
+#line 2469 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->progress_dialog);
+#line 2469 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->progress_dialog = _tmp13_;
+#line 2472 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = self->priv->progress_dialog;
+#line 2472 "/home/jens/Source/shotwell/src/Commands.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, gtk_widget_get_type (), GtkWidget));
+#line 21828 "Commands.c"
+ }
+#line 2461 "/home/jens/Source/shotwell/src/Commands.vala"
+ return self;
+#line 21832 "Commands.c"
+}
+
+
+FlagUnflagCommand* flag_unflag_command_new (GeeCollection* sources, gboolean flag) {
+#line 2461 "/home/jens/Source/shotwell/src/Commands.vala"
+ return flag_unflag_command_construct (TYPE_FLAG_UNFLAG_COMMAND, sources, flag);
+#line 21839 "Commands.c"
+}
+
+
+static void flag_unflag_command_real_execute_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources) {
+ FlagUnflagCommand * self;
+ gint num_processed = 0;
+ ProgressDialog* _tmp16_ = NULL;
+#line 2476 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_FLAG_UNFLAG_COMMAND, FlagUnflagCommand);
+#line 2476 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_COLLECTION (sources));
+#line 2477 "/home/jens/Source/shotwell/src/Commands.vala"
+ num_processed = 0;
+#line 21853 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = sources;
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp1_;
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 21866 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ DataSource* source = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ DataSource* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+ gint _tmp8_ = 0;
+ ProgressDialog* _tmp9_ = NULL;
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _source_it;
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 21884 "Commands.c"
+ }
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _source_it;
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp5_;
+#line 2480 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = source;
+#line 2480 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->flag;
+#line 2480 "/home/jens/Source/shotwell/src/Commands.vala"
+ flag_unflag_command_flag_unflag (self, _tmp6_, _tmp7_);
+#line 2482 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp8_ = num_processed;
+#line 2482 "/home/jens/Source/shotwell/src/Commands.vala"
+ num_processed = _tmp8_ + 1;
+#line 2484 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp9_ = self->priv->progress_dialog;
+#line 2484 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp9_ != NULL) {
+#line 21906 "Commands.c"
+ ProgressDialog* _tmp10_ = NULL;
+ gint _tmp11_ = 0;
+ GeeCollection* _tmp12_ = NULL;
+ gint _tmp13_ = 0;
+ gint _tmp14_ = 0;
+ ProgressDialog* _tmp15_ = NULL;
+#line 2485 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp10_ = self->priv->progress_dialog;
+#line 2485 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp11_ = num_processed;
+#line 2485 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp12_ = sources;
+#line 2485 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp13_ = gee_collection_get_size (_tmp12_);
+#line 2485 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp14_ = _tmp13_;
+#line 2485 "/home/jens/Source/shotwell/src/Commands.vala"
+ progress_dialog_set_fraction (_tmp10_, _tmp11_, _tmp14_);
+#line 2486 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp15_ = self->priv->progress_dialog;
+#line 2486 "/home/jens/Source/shotwell/src/Commands.vala"
+ gtk_widget_queue_draw (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, gtk_widget_get_type (), GtkWidget));
+#line 2487 "/home/jens/Source/shotwell/src/Commands.vala"
+ spin_event_loop ();
+#line 21931 "Commands.c"
+ }
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 21935 "Commands.c"
+ }
+#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 21939 "Commands.c"
+ }
+#line 2491 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp16_ = self->priv->progress_dialog;
+#line 2491 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp16_ != NULL) {
+#line 21945 "Commands.c"
+ ProgressDialog* _tmp17_ = NULL;
+#line 2492 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp17_ = self->priv->progress_dialog;
+#line 2492 "/home/jens/Source/shotwell/src/Commands.vala"
+ gtk_widget_hide (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, gtk_widget_get_type (), GtkWidget));
+#line 21951 "Commands.c"
+ }
+}
+
+
+static void flag_unflag_command_real_undo_on_all (MultipleDataSourceAtOnceCommand* base, GeeCollection* sources) {
+ FlagUnflagCommand * self;
+#line 2495 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_FLAG_UNFLAG_COMMAND, FlagUnflagCommand);
+#line 2495 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (GEE_IS_COLLECTION (sources));
+#line 21962 "Commands.c"
+ {
+ GeeIterator* _source_it = NULL;
+ GeeCollection* _tmp0_ = NULL;
+ GeeIterator* _tmp1_ = NULL;
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = sources;
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _source_it = _tmp1_;
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ while (TRUE) {
+#line 21975 "Commands.c"
+ GeeIterator* _tmp2_ = NULL;
+ gboolean _tmp3_ = FALSE;
+ DataSource* source = NULL;
+ GeeIterator* _tmp4_ = NULL;
+ gpointer _tmp5_ = NULL;
+ DataSource* _tmp6_ = NULL;
+ gboolean _tmp7_ = FALSE;
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = _source_it;
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = gee_iterator_next (_tmp2_);
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (!_tmp3_) {
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ break;
+#line 21991 "Commands.c"
+ }
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = _source_it;
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = gee_iterator_get (_tmp4_);
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ source = (DataSource*) _tmp5_;
+#line 2497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp6_ = source;
+#line 2497 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp7_ = self->priv->flag;
+#line 2497 "/home/jens/Source/shotwell/src/Commands.vala"
+ flag_unflag_command_flag_unflag (self, _tmp6_, !_tmp7_);
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (source);
+#line 22007 "Commands.c"
+ }
+#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (_source_it);
+#line 22011 "Commands.c"
+ }
+}
+
+
+static void flag_unflag_command_flag_unflag (FlagUnflagCommand* self, DataSource* source, gboolean flag) {
+ Flaggable* flaggable = NULL;
+ DataSource* _tmp0_ = NULL;
+ Flaggable* _tmp1_ = NULL;
+ Flaggable* _tmp2_ = NULL;
+#line 2500 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_FLAG_UNFLAG_COMMAND (self));
+#line 2500 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_return_if_fail (IS_DATA_SOURCE (source));
+#line 2501 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp0_ = source;
+#line 2501 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, TYPE_FLAGGABLE) ? ((Flaggable*) _tmp0_) : NULL);
+#line 2501 "/home/jens/Source/shotwell/src/Commands.vala"
+ flaggable = _tmp1_;
+#line 2502 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp2_ = flaggable;
+#line 2502 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp2_ != NULL) {
+#line 22035 "Commands.c"
+ gboolean _tmp3_ = FALSE;
+#line 2503 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp3_ = flag;
+#line 2503 "/home/jens/Source/shotwell/src/Commands.vala"
+ if (_tmp3_) {
+#line 22041 "Commands.c"
+ Flaggable* _tmp4_ = NULL;
+#line 2504 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp4_ = flaggable;
+#line 2504 "/home/jens/Source/shotwell/src/Commands.vala"
+ flaggable_mark_flagged (_tmp4_);
+#line 22047 "Commands.c"
+ } else {
+ Flaggable* _tmp5_ = NULL;
+#line 2506 "/home/jens/Source/shotwell/src/Commands.vala"
+ _tmp5_ = flaggable;
+#line 2506 "/home/jens/Source/shotwell/src/Commands.vala"
+ flaggable_mark_unflagged (_tmp5_);
+#line 22054 "Commands.c"
+ }
+ }
+#line 2500 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (flaggable);
+#line 22059 "Commands.c"
+}
+
+
+static void flag_unflag_command_class_init (FlagUnflagCommandClass * klass) {
+#line 2451 "/home/jens/Source/shotwell/src/Commands.vala"
+ flag_unflag_command_parent_class = g_type_class_peek_parent (klass);
+#line 2451 "/home/jens/Source/shotwell/src/Commands.vala"
+ g_type_class_add_private (klass, sizeof (FlagUnflagCommandPrivate));
+#line 2451 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceAtOnceCommandClass *) klass)->execute_on_all = flag_unflag_command_real_execute_on_all;
+#line 2451 "/home/jens/Source/shotwell/src/Commands.vala"
+ ((MultipleDataSourceAtOnceCommandClass *) klass)->undo_on_all = flag_unflag_command_real_undo_on_all;
+#line 2451 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (klass)->finalize = flag_unflag_command_finalize;
+#line 22074 "Commands.c"
+}
+
+
+static void flag_unflag_command_instance_init (FlagUnflagCommand * self) {
+#line 2451 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv = FLAG_UNFLAG_COMMAND_GET_PRIVATE (self);
+#line 2459 "/home/jens/Source/shotwell/src/Commands.vala"
+ self->priv->progress_dialog = NULL;
+#line 22083 "Commands.c"
+}
+
+
+static void flag_unflag_command_finalize (GObject* obj) {
+ FlagUnflagCommand * self;
+#line 2451 "/home/jens/Source/shotwell/src/Commands.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_FLAG_UNFLAG_COMMAND, FlagUnflagCommand);
+#line 2459 "/home/jens/Source/shotwell/src/Commands.vala"
+ _g_object_unref0 (self->priv->progress_dialog);
+#line 2451 "/home/jens/Source/shotwell/src/Commands.vala"
+ G_OBJECT_CLASS (flag_unflag_command_parent_class)->finalize (obj);
+#line 22095 "Commands.c"
+}
+
+
+GType flag_unflag_command_get_type (void) {
+ static volatile gsize flag_unflag_command_type_id__volatile = 0;
+ if (g_once_init_enter (&flag_unflag_command_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (FlagUnflagCommandClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) flag_unflag_command_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FlagUnflagCommand), 0, (GInstanceInitFunc) flag_unflag_command_instance_init, NULL };
+ GType flag_unflag_command_type_id;
+ flag_unflag_command_type_id = g_type_register_static (TYPE_MULTIPLE_DATA_SOURCE_AT_ONCE_COMMAND, "FlagUnflagCommand", &g_define_type_info, 0);
+ g_once_init_leave (&flag_unflag_command_type_id__volatile, flag_unflag_command_type_id);
+ }
+ return flag_unflag_command_type_id__volatile;
+}
+
+
+