/* Commands.c generated by valac 0.34.7, 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 "shotwell-graphics-processor.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 _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;
#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 2741 "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 2748 "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 2755 "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 2762 "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 2800 "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 2820 "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 2847 "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 2853 "Commands.c"
			} else {
#line 32 "/home/jens/Source/shotwell/src/Commands.vala"
				_tmp14_ = FALSE;
#line 2857 "Commands.c"
			}
#line 32 "/home/jens/Source/shotwell/src/Commands.vala"
			if (_tmp14_) {
#line 2861 "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 2872 "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 2882 "Commands.c"
			}
		}
#line 20 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (photo_page);
#line 2887 "Commands.c"
	}
#line 15 "/home/jens/Source/shotwell/src/Commands.vala"
	return self;
#line 2891 "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 2903 "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 2918 "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 2922 "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 2943 "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 2950 "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 2956 "Commands.c"
		} else {
#line 69 "/home/jens/Source/shotwell/src/Commands.vala"
			_tmp3_ = FALSE;
#line 2960 "Commands.c"
		}
#line 69 "/home/jens/Source/shotwell/src/Commands.vala"
		if (_tmp3_) {
#line 2964 "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 2989 "Commands.c"
			{
				gint i = 0;
#line 72 "/home/jens/Source/shotwell/src/Commands.vala"
				i = 0;
#line 2994 "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 3001 "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 3016 "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 3022 "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 3034 "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 3068 "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 3077 "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 3094 "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 3103 "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 3117 "Commands.c"
		}
	}
#line 65 "/home/jens/Source/shotwell/src/Commands.vala"
	_g_object_unref0 (photo_page);
#line 3122 "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 3141 "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 3160 "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 3179 "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 = (void (*)(Command*)) page_command_real_prepare;
#line 9 "/home/jens/Source/shotwell/src/Commands.vala"
	G_OBJECT_CLASS (klass)->finalize = page_command_finalize;
#line 3192 "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 3205 "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 3220 "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 3229 "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 3235 "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 3244 "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 3250 "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 3259 "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 3269 "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 3288 "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 3325 "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 3343 "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 3360 "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 3369 "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 3393 "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 3412 "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 3449 "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 3470 "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 3479 "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 3488 "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 3509 "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 3518 "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 3527 "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 3536 "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 3549 "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 3569 "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 3597 "Commands.c"
		}
#line 162 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_proxyable_it);
#line 3601 "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 3610 "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 3623 "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 3639 "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 3655 "Commands.c"
		}
#line 171 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_added_proxy_it);
#line 3659 "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 3665 "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 3684 "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 = (void (*)(Command*)) simple_proxyable_command_real_execute;
#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
	((SimpleProxyableCommandClass *) klass)->execute_on_source = (void (*)(SimpleProxyableCommand*, DataSource*)) simple_proxyable_command_real_execute_on_source;
#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) simple_proxyable_command_real_undo;
#line 129 "/home/jens/Source/shotwell/src/Commands.vala"
	((SimpleProxyableCommandClass *) klass)->undo_on_source = (void (*)(SimpleProxyableCommand*, DataSource*)) 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 3703 "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, (GDestroyNotify) source_proxy_unref, NULL, NULL, NULL, NULL, NULL, NULL);
#line 131 "/home/jens/Source/shotwell/src/Commands.vala"
	self->priv->proxies = _tmp0_;
#line 3715 "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 3739 "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 3758 "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 3798 "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 3814 "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 3831 "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 = (void (*)(Command*)) 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 3844 "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 3851 "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 3871 "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 3890 "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 3915 "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 3960 "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 3969 "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 3978 "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 3994 "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 4010 "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 4022 "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 4031 "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 4065 "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 4083 "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 4099 "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 4121 "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 4138 "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 = (void (*)(Command*)) generic_photo_transformation_command_real_execute;
#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
	((GenericPhotoTransformationCommandClass *) klass)->execute_on_photo = (void (*)(GenericPhotoTransformationCommand*, Photo*)) generic_photo_transformation_command_real_execute_on_photo;
#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) generic_photo_transformation_command_real_undo;
#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->redo = (void (*)(Command*)) generic_photo_transformation_command_real_redo;
#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
	((GenericPhotoTransformationCommandClass *) klass)->can_compress = (gboolean (*)(GenericPhotoTransformationCommand*, Command*)) generic_photo_transformation_command_real_can_compress;
#line 206 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->compress = (gboolean (*)(Command*, Command*)) 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 4161 "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 4172 "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 4186 "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 4195 "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 4201 "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 4210 "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 4218 "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 4237 "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 4281 "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 4294 "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 4317 "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 4341 "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 4350 "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 4364 "Commands.c"
		}
#line 292 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_view_it);
#line 4368 "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 4382 "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 4397 "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 4411 "Commands.c"
		}
#line 302 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_current_collection_it);
#line 4415 "Commands.c"
	}
#line 285 "/home/jens/Source/shotwell/src/Commands.vala"
	return self;
#line 4419 "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 4437 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 4458 "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 4478 "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 4489 "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 4515 "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 4524 "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 4533 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 339 "/home/jens/Source/shotwell/src/Commands.vala"
	_tmp2_ = _tmp1_;
#line 339 "/home/jens/Source/shotwell/src/Commands.vala"
	if (_tmp2_ > 0) {
#line 4552 "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 4567 "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 4577 "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 4586 "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 4593 "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 4600 "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 4613 "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 4631 "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 4649 "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 4661 "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 4667 "Commands.c"
		}
#line 351 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_sources_it);
#line 4671 "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 4679 "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 4692 "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 4710 "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 4728 "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 4740 "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 4746 "Commands.c"
		}
#line 359 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_sources_it);
#line 4750 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 4810 "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 4816 "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 4822 "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 4829 "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 4843 "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 4856 "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 4864 "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 4870 "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 4898 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 4927 "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 4950 "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 4964 "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 4970 "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 4977 "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 4983 "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 4992 "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 4998 "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 5014 "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 5028 "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 5034 "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 5043 "Commands.c"
				} else {
#line 400 "/home/jens/Source/shotwell/src/Commands.vala"
					_tmp46_ = FALSE;
#line 5047 "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 5055 "Commands.c"
				}
			}
#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (source);
#line 5060 "Commands.c"
		}
#line 385 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_list);
#line 5064 "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 5070 "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 5076 "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 5092 "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 = (void (*)(Command*)) multiple_data_source_command_real_execute;
#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->execute_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) multiple_data_source_command_real_execute_on_source;
#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) multiple_data_source_command_real_undo;
#line 275 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->undo_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) 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 5111 "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, (GDestroyNotify) 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, (GDestroyNotify) 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, (GDestroyNotify) data_collection_unref, NULL, NULL, NULL, NULL, NULL, NULL);
#line 283 "/home/jens/Source/shotwell/src/Commands.vala"
	self->priv->hooked_collections = _tmp2_;
#line 5133 "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 5141 "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 5154 "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 5170 "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 5186 "Commands.c"
		}
#line 308 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_current_collection_it);
#line 5190 "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 5204 "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 5223 "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 5251 "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 5264 "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 5283 "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 5301 "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 5309 "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 5318 "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 5324 "Commands.c"
		}
#line 423 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 5328 "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 5342 "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 5357 "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 5371 "Commands.c"
		}
#line 429 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_collection_it);
#line 5375 "Commands.c"
	}
#line 417 "/home/jens/Source/shotwell/src/Commands.vala"
	return self;
#line 5379 "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 5425 "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 5433 "Commands.c"
				goto __catch458_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 5447 "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 5455 "Commands.c"
		}
	}
	goto __finally458;
	__catch458_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 5473 "Commands.c"
	}
	__finally458:
	{
		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 5487 "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 5497 "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 5507 "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 5516 "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 5562 "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 5570 "Commands.c"
				goto __catch459_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 5584 "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 5592 "Commands.c"
		}
	}
	goto __finally459;
	__catch459_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 5610 "Commands.c"
	}
	__finally459:
	{
		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 5624 "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 5634 "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 5644 "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 5653 "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 5662 "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 5675 "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 5692 "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 5708 "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 5723 "Commands.c"
			}
#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (source);
#line 5727 "Commands.c"
		}
#line 479 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 5731 "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 = (void (*)(Command*)) multiple_data_source_at_once_command_real_execute;
#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceAtOnceCommandClass *) klass)->execute_on_all = (void (*)(MultipleDataSourceAtOnceCommand*, GeeCollection*)) multiple_data_source_at_once_command_real_execute_on_all;
#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) multiple_data_source_at_once_command_real_undo;
#line 413 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceAtOnceCommandClass *) klass)->undo_on_all = (void (*)(MultipleDataSourceAtOnceCommand*, GeeCollection*)) 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 5751 "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, (GDestroyNotify) 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, (GDestroyNotify) data_collection_unref, NULL, NULL, NULL, NULL, NULL, NULL);
#line 415 "/home/jens/Source/shotwell/src/Commands.vala"
	self->priv->hooked_collections = _tmp1_;
#line 5768 "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 5776 "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 5789 "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 5805 "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 5821 "Commands.c"
		}
#line 434 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_collection_it);
#line 5825 "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 5833 "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 5852 "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 5885 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 5913 "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 5943 "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 5983 "Commands.c"
		}
#line 497 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_list);
#line 5987 "Commands.c"
	}
#line 493 "/home/jens/Source/shotwell/src/Commands.vala"
	return self;
#line 5991 "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 6027 "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 6044 "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 = (void (*)(MultipleDataSourceCommand*, DataSource*)) 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 6057 "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, (GDestroyNotify) g_object_unref, TYPE_PHOTO_TRANSFORMATION_STATE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 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 6069 "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 6077 "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_ABSTRACT_MAP, GeeAbstractMap));
#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 6104 "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 6120 "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 6136 "Commands.c"
		}
#line 507 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_state_it);
#line 6140 "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 6146 "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 6188 "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 6195 "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 6211 "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 6230 "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 = (void (*)(Command*)) rotate_single_command_real_execute;
#line 525 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) rotate_single_command_real_undo;
#line 525 "/home/jens/Source/shotwell/src/Commands.vala"
	G_OBJECT_CLASS (klass)->finalize = rotate_single_command_finalize;
#line 6245 "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 6252 "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 6262 "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 6314 "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 6321 "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 6339 "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 6360 "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 = (void (*)(MultipleDataSourceCommand*, DataSource*)) rotate_multiple_command_real_execute_on_source;
#line 543 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->undo_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) 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 6375 "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 6382 "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 6392 "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 6452 "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 6459 "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 6475 "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 6491 "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 = (void (*)(Command*)) edit_title_command_real_execute;
#line 562 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) edit_title_command_real_undo;
#line 562 "/home/jens/Source/shotwell/src/Commands.vala"
	G_OBJECT_CLASS (klass)->finalize = edit_title_command_finalize;
#line 6506 "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 6513 "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 6527 "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 6576 "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 6583 "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 6599 "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 6615 "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 = (void (*)(Command*)) edit_comment_command_real_execute;
#line 584 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) edit_comment_command_real_undo;
#line 584 "/home/jens/Source/shotwell/src/Commands.vala"
	G_OBJECT_CLASS (klass)->finalize = edit_comment_command_finalize;
#line 6630 "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 6637 "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 6651 "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 6700 "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 6713 "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 6732 "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 6756 "Commands.c"
		}
#line 614 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_media_it);
#line 6760 "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 6766 "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 6773 "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 6783 "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 6796 "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 6812 "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 6828 "Commands.c"
		}
#line 619 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 6832 "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 6843 "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 6856 "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 6875 "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 6899 "Commands.c"
		}
#line 624 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 6903 "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 = (void (*)(MultipleDataSourceAtOnceCommand*, GeeCollection*)) edit_multiple_titles_command_real_execute_on_all;
#line 604 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceAtOnceCommandClass *) klass)->undo_on_all = (void (*)(MultipleDataSourceAtOnceCommand*, GeeCollection*)) 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 6917 "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, (GDestroyNotify) g_object_unref, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 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 6927 "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 6941 "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 6978 "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 6991 "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 7010 "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 7034 "Commands.c"
		}
#line 637 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_media_it);
#line 7038 "Commands.c"
	}
#line 633 "/home/jens/Source/shotwell/src/Commands.vala"
	return self;
#line 7042 "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 7049 "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 7059 "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 7072 "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 7088 "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 7104 "Commands.c"
		}
#line 642 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 7108 "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 7119 "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 7132 "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 7151 "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 7175 "Commands.c"
		}
#line 647 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 7179 "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 = (void (*)(MultipleDataSourceAtOnceCommand*, GeeCollection*)) edit_multiple_comments_command_real_execute_on_all;
#line 629 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceAtOnceCommandClass *) klass)->undo_on_all = (void (*)(MultipleDataSourceAtOnceCommand*, GeeCollection*)) 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 7193 "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, (GDestroyNotify) g_object_unref, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 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 7203 "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 7217 "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 7266 "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 7273 "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 7291 "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 7309 "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 = (void (*)(SimpleProxyableCommand*, DataSource*)) rename_event_command_real_execute_on_source;
#line 652 "/home/jens/Source/shotwell/src/Commands.vala"
	((SimpleProxyableCommandClass *) klass)->undo_on_source = (void (*)(SimpleProxyableCommand*, DataSource*)) 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 7324 "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 7331 "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 7345 "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 7394 "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 7401 "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 7419 "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 7437 "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 = (void (*)(SimpleProxyableCommand*, DataSource*)) edit_event_comment_command_real_execute_on_source;
#line 672 "/home/jens/Source/shotwell/src/Commands.vala"
	((SimpleProxyableCommandClass *) klass)->undo_on_source = (void (*)(SimpleProxyableCommand*, DataSource*)) 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 7452 "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 7459 "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 7473 "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 7522 "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 7529 "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 7545 "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 7561 "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 = (void (*)(Command*)) set_key_photo_command_real_execute;
#line 692 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) 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 7576 "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 7583 "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 7597 "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 7624 "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 7631 "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 7646 "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 7680 "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 7696 "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 7704 "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 = (void (*)(GenericPhotoTransformationCommand*, Photo*)) revert_single_command_real_execute_on_photo;
#line 712 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->compress = (gboolean (*)(Command*, Command*)) revert_single_command_real_compress;
#line 7715 "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 7752 "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 7759 "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 7774 "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 = (void (*)(MultipleDataSourceCommand*, DataSource*)) revert_multiple_command_real_execute_on_source;
#line 7783 "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 7814 "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 7821 "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 7856 "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 7890 "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 7906 "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 7914 "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 = (void (*)(GenericPhotoTransformationCommand*, Photo*)) enhance_single_command_real_execute_on_photo;
#line 746 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->compress = (gboolean (*)(Command*, Command*)) enhance_single_command_real_compress;
#line 7925 "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 7962 "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 7969 "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 7984 "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 = (void (*)(MultipleDataSourceCommand*, DataSource*)) enhance_multiple_command_real_execute_on_source;
#line 7993 "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 8046 "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 8053 "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 8082 "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 8088 "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 8106 "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 8112 "Commands.c"
	}
#line 801 "/home/jens/Source/shotwell/src/Commands.vala"
	_data_collection_unref0 (collection);
#line 8116 "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 = (void (*)(GenericPhotoTransformationCommand*, 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 8129 "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 8136 "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 8146 "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 8190 "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 8197 "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 8215 "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 = (void (*)(GenericPhotoTransformationCommand*, 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 8228 "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 8235 "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 8245 "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 8264 "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 8301 "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 8308 "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 8346 "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 8364 "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 = (void (*)(GenericPhotoTransformationCommand*, Photo*)) adjust_colors_single_command_real_execute_on_photo;
#line 829 "/home/jens/Source/shotwell/src/Commands.vala"
	((GenericPhotoTransformationCommandClass *) klass)->can_compress = (gboolean (*)(GenericPhotoTransformationCommand*, Command*)) 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 8379 "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 8386 "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 8398 "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 8453 "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 8460 "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 8478 "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 = (void (*)(MultipleDataSourceCommand*, DataSource*)) 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 8491 "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 8498 "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 8510 "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 8554 "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 8561 "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 8579 "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 = (void (*)(GenericPhotoTransformationCommand*, 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 8592 "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 8599 "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 8609 "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 8641 "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 8659 "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 8677 "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 8695 "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 8702 "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 8709 "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 8747 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 8775 "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 8809 "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 8835 "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 8846 "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 8852 "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 8862 "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 8868 "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 8888 "Commands.c"
		}
#line 896 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_list);
#line 8892 "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 8908 "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 8915 "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 8944 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 928 "/home/jens/Source/shotwell/src/Commands.vala"
		_tmp15_ = _tmp14_;
#line 928 "/home/jens/Source/shotwell/src/Commands.vala"
		if (_tmp12_ == _tmp15_) {
#line 8987 "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 9009 "Commands.c"
		}
#line 924 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (evt);
#line 9013 "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 9034 "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 9056 "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 9061 "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 9087 "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 9125 "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 9136 "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 9142 "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 9154 "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 9171 "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 = (void (*)(Command*)) move_photos_command_real_move_photos_command_real_execute;
#line 886 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->execute_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) 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 = (void (*)(MultipleDataSourceCommand*, DataSource*)) 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 9188 "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, (GDestroyNotify) g_object_unref, TYPE_SOURCE_PROXY, (GBoxedCopyFunc) source_proxy_ref, (GDestroyNotify) 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 9202 "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 9218 "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_ABSTRACT_MAP, GeeAbstractMap));
#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 9245 "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 9260 "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 9272 "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 9281 "Commands.c"
			}
#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
			_source_proxy_unref0 (proxy);
#line 9285 "Commands.c"
		}
#line 916 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_proxy_it);
#line 9289 "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 9297 "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 = (void (*)(Command*)) move_photos_command_real_prepare;
#line 883 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->execute = (void (*)(Command*)) move_photos_command_real_execute;
#line 883 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) move_photos_command_real_undo;
#line 883 "/home/jens/Source/shotwell/src/Commands.vala"
	G_OBJECT_CLASS (klass)->finalize = move_photos_command_finalize;
#line 9324 "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 9340 "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 9373 "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 9386 "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 9404 "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 9422 "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 9439 "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 9445 "Commands.c"
		}
#line 993 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_view_it);
#line 9449 "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 9479 "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 9486 "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 9493 "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 9542 "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 9549 "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 9556 "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, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 1034 "/home/jens/Source/shotwell/src/Commands.vala"
	media_thumbs = _tmp0_;
#line 9606 "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 9619 "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 9637 "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 9655 "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 9682 "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 9691 "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 9702 "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 9714 "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 9733 "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 9741 "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 9753 "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 9772 "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 9800 "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 9818 "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 9840 "Commands.c"
				}
#line 1068 "/home/jens/Source/shotwell/src/Commands.vala"
				_g_object_unref0 (_media_source_it);
#line 9844 "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 9850 "Commands.c"
		}
#line 1036 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_view_it);
#line 9854 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 9888 "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 9895 "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 9902 "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 9925 "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 9951 "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 9958 "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_ABSTRACT_MAP, GeeAbstractMap));
#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 9992 "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 10003 "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 10026 "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 10049 "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 10070 "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 10081 "Commands.c"
			goto __catch460_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 10090 "Commands.c"
	}
	goto __finally460;
	__catch460_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 10131 "Commands.c"
	}
	__finally460:
#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 10144 "Commands.c"
	}
#line 1114 "/home/jens/Source/shotwell/src/Commands.vala"
	_g_object_unref0 (photo);
#line 10148 "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 10178 "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 10229 "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 = (void (*)(Command*)) duplicate_multiple_photos_command_real_execute;
#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->execute_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) duplicate_multiple_photos_command_real_execute_on_source;
#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) duplicate_multiple_photos_command_real_undo;
#line 1080 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->undo_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) 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 10248 "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, (GDestroyNotify) g_object_unref, TYPE_LIBRARY_PHOTO, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 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 10262 "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 10282 "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 10330 "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 10337 "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 10357 "Commands.c"
	} else {
#line 1164 "/home/jens/Source/shotwell/src/Commands.vala"
		_tmp0_ = RESOURCES_DECREASE_RATING_LABEL;
#line 10361 "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 10381 "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 10388 "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 10401 "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 10410 "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 10417 "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 10423 "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 10430 "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 10448 "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 = (void (*)(Command*)) set_rating_single_command_real_execute;
#line 1148 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) 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 10463 "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 10470 "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 10480 "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 10539 "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 10546 "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 10567 "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 10573 "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 10580 "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 10586 "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 10592 "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 10599 "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 10607 "Commands.c"
	} else {
#line 1207 "/home/jens/Source/shotwell/src/Commands.vala"
		_tmp8_ = RESOURCES_DECREASE_RATING_LABEL;
#line 10611 "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 10629 "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 10636 "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, (GDestroyNotify) 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 10652 "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 10665 "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 10686 "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 10714 "Commands.c"
		}
#line 1218 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_view_it);
#line 10718 "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 10731 "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 10743 "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 10758 "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 10767 "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 10774 "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 10780 "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 10787 "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 10813 "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 = (void (*)(Command*)) set_rating_command_real_execute;
#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) set_rating_command_real_undo;
#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->execute_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) set_rating_command_real_execute_on_source;
#line 1187 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->undo_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) 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 10832 "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 10841 "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 10853 "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 10899 "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 10906 "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, (GDestroyNotify) 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, (GDestroyNotify) g_object_unref, TYPE_PHOTO_TRANSFORMATION_STATE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 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 10929 "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 10942 "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 10962 "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 10980 "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 10990 "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 11024 "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 11030 "Commands.c"
		}
#line 1266 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_view_it);
#line 11034 "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 11045 "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 11055 "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 11082 "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 11089 "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 11098 "Commands.c"
		} else {
#line 1286 "/home/jens/Source/shotwell/src/Commands.vala"
			_tmp4_ = FALSE;
#line 11102 "Commands.c"
		}
#line 1286 "/home/jens/Source/shotwell/src/Commands.vala"
		if (_tmp4_) {
#line 11106 "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 11112 "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 11122 "Commands.c"
		}
	}
#line 1283 "/home/jens/Source/shotwell/src/Commands.vala"
	_g_object_unref0 (photo);
#line 11127 "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 11154 "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 11188 "Commands.c"
	}
#line 1293 "/home/jens/Source/shotwell/src/Commands.vala"
	_g_object_unref0 (photo);
#line 11192 "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 11208 "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 11217 "Commands.c"
	} else {
#line 1302 "/home/jens/Source/shotwell/src/Commands.vala"
		_tmp0_ = FALSE;
#line 11221 "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 11227 "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 = (void (*)(Command*)) set_raw_developer_command_real_execute;
#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) set_raw_developer_command_real_undo;
#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->execute_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) set_raw_developer_command_real_execute_on_source;
#line 1250 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->undo_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) 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 11246 "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 11253 "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 11267 "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 11314 "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 11321 "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 11361 "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 11385 "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 11403 "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 11421 "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 11438 "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 11444 "Commands.c"
		}
#line 1327 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_dobj_it);
#line 11448 "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 11458 "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 11488 "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 11504 "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 11510 "Commands.c"
	} else {
#line 1343 "/home/jens/Source/shotwell/src/Commands.vala"
		_tmp0_ = FALSE;
#line 11514 "Commands.c"
	}
#line 1343 "/home/jens/Source/shotwell/src/Commands.vala"
	if (_tmp0_) {
#line 11518 "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 11530 "Commands.c"
				goto __catch461_g_error;
			}
		}
		goto __finally461;
		__catch461_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 11549 "Commands.c"
		}
		__finally461:
#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 11560 "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 11571 "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 = (void (*)(Command*)) adjust_date_time_photo_command_real_execute;
#line 1306 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) 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 11587 "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 11594 "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 11608 "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 11632 "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 11639 "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, (GDestroyNotify) g_object_unref, TYPE_EVENT, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 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 11681 "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 11694 "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 11720 "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 11740 "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 11754 "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 11774 "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 11806 "Commands.c"
			}
#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (view);
#line 11810 "Commands.c"
		}
#line 1380 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_view_it);
#line 11814 "Commands.c"
	}
#line 1390 "/home/jens/Source/shotwell/src/Commands.vala"
	_tmp32_ = gee_hash_map_new (TYPE_DATEABLE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, G_TYPE_INVALID, (GBoxedCopyFunc) _time_t_dup, (GDestroyNotify) 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 11824 "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 11831 "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, (GDestroyNotify) 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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 1397 "/home/jens/Source/shotwell/src/Commands.vala"
	_tmp3_ = _tmp2_;
#line 1397 "/home/jens/Source/shotwell/src/Commands.vala"
	if (_tmp3_ > 0) {
#line 11861 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 11882 "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 11888 "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 11915 "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 11931 "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 11939 "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 11963 "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 11981 "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 11999 "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 12016 "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 12022 "Commands.c"
				}
#line 1407 "/home/jens/Source/shotwell/src/Commands.vala"
				_g_object_unref0 (_dobj_it);
#line 12026 "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 12036 "Commands.c"
		}
#line 1406 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_d_it);
#line 12040 "Commands.c"
	}
#line 1393 "/home/jens/Source/shotwell/src/Commands.vala"
	_data_collection_unref0 (all_events);
#line 12044 "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, (GDestroyNotify) 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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 1421 "/home/jens/Source/shotwell/src/Commands.vala"
	_tmp3_ = _tmp2_;
#line 1421 "/home/jens/Source/shotwell/src/Commands.vala"
	if (_tmp3_ > 0) {
#line 12072 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 12093 "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 12110 "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 12116 "Commands.c"
	} else {
#line 1433 "/home/jens/Source/shotwell/src/Commands.vala"
		_tmp0_ = FALSE;
#line 12120 "Commands.c"
	}
#line 1433 "/home/jens/Source/shotwell/src/Commands.vala"
	if (_tmp0_) {
#line 12124 "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 12136 "Commands.c"
				goto __catch462_g_error;
			}
		}
		goto __finally462;
		__catch462_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 12158 "Commands.c"
		}
		__finally462:
#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 12169 "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 12180 "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 12210 "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 12219 "Commands.c"
	} else {
#line 1449 "/home/jens/Source/shotwell/src/Commands.vala"
		_tmp2_ = FALSE;
#line 12223 "Commands.c"
	}
#line 1449 "/home/jens/Source/shotwell/src/Commands.vala"
	if (_tmp2_) {
#line 12227 "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 12242 "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 12266 "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 12272 "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 12296 "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 12314 "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 12332 "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 12349 "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 12355 "Commands.c"
		}
#line 1458 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_dobj_it);
#line 12359 "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 12371 "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 12406 "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 12434 "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 12450 "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 12468 "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 = (void (*)(Command*)) adjust_date_time_photos_command_real_execute;
#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) adjust_date_time_photos_command_real_undo;
#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->execute_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) adjust_date_time_photos_command_real_execute_on_source;
#line 1355 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceCommandClass *) klass)->undo_on_source = (void (*)(MultipleDataSourceCommand*, DataSource*)) 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 12487 "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 12496 "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 12514 "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 12533 "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 12540 "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 12572 "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 12584 "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 12591 "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 12610 "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 12638 "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 12669 "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, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 1502 "/home/jens/Source/shotwell/src/Commands.vala"
						add_sources = _tmp24_;
#line 12695 "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 12708 "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 12725 "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 12741 "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 12750 "Commands.c"
								}
#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
								_g_object_unref0 (source);
#line 12754 "Commands.c"
							}
#line 1503 "/home/jens/Source/shotwell/src/Commands.vala"
							_g_object_unref0 (_source_it);
#line 12758 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 1508 "/home/jens/Source/shotwell/src/Commands.vala"
						_tmp38_ = _tmp37_;
#line 1508 "/home/jens/Source/shotwell/src/Commands.vala"
						if (_tmp38_ > 0) {
#line 12768 "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 12785 "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 12795 "Commands.c"
					}
#line 1496 "/home/jens/Source/shotwell/src/Commands.vala"
					_g_object_unref0 (_create_path_list);
#line 12799 "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 12805 "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 12819 "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 12826 "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 12834 "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_ABSTRACT_MAP, GeeAbstractMap));
#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 12861 "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 12882 "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 12912 "Commands.c"
		}
#line 1528 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_tag_proxy_it);
#line 12916 "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 12925 "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_ABSTRACT_MAP, GeeAbstractMap));
#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 12952 "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 12976 "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 13012 "Commands.c"
		}
#line 1533 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_tag_proxy_it);
#line 13016 "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 13026 "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_ABSTRACT_MAP, GeeAbstractMap));
#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 13053 "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 13070 "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 13086 "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 13103 "Commands.c"
			}
#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (sources);
#line 13107 "Commands.c"
		}
#line 1541 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_sources_it);
#line 13111 "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 13129 "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 = (void (*)(Command*)) add_tags_command_real_execute;
#line 1481 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) add_tags_command_real_undo;
#line 1481 "/home/jens/Source/shotwell/src/Commands.vala"
	G_OBJECT_CLASS (klass)->finalize = add_tags_command_finalize;
#line 13144 "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, (GDestroyNotify) source_proxy_unref, GEE_TYPE_ARRAY_LIST, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 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 13156 "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 13168 "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_ABSTRACT_MAP, GeeAbstractMap));
#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 13195 "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 13211 "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 13227 "Commands.c"
		}
#line 1520 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_tag_proxy_it);
#line 13231 "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 13249 "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 13331 "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 13338 "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 13359 "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 13373 "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 13395 "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 13409 "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 = (void (*)(SimpleProxyableCommand*, DataSource*)) rename_tag_command_real_execute_on_source;
#line 1555 "/home/jens/Source/shotwell/src/Commands.vala"
	((SimpleProxyableCommandClass *) klass)->undo_on_source = (void (*)(SimpleProxyableCommand*, DataSource*)) 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 13425 "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 13432 "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 13446 "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 13503 "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 13510 "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 13517 "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 13561 "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, (GDestroyNotify) 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 13569 "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 13597 "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 13628 "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 13672 "Commands.c"
			}
#line 1595 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (_victim_list);
#line 13676 "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 13697 "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 13717 "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 13731 "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 13738 "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 13752 "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 13758 "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 13768 "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 13798 "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 13806 "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 13824 "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 = (void (*)(SimpleProxyableCommand*, DataSource*)) delete_tag_command_real_execute_on_source;
#line 1579 "/home/jens/Source/shotwell/src/Commands.vala"
	((SimpleProxyableCommandClass *) klass)->undo_on_source = (void (*)(SimpleProxyableCommand*, DataSource*)) 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 13839 "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 13848 "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 13860 "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 13901 "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 13908 "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 13936 "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 13965 "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 13988 "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 = (void (*)(SimpleProxyableCommand*, DataSource*)) new_child_tag_command_real_execute_on_source;
#line 1633 "/home/jens/Source/shotwell/src/Commands.vala"
	((SimpleProxyableCommandClass *) klass)->undo_on_source = (void (*)(SimpleProxyableCommand*, DataSource*)) 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 14003 "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 14012 "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 14024 "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 14049 "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 14056 "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 14069 "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 14085 "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 14098 "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 14134 "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 14152 "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 = (void (*)(Command*)) new_root_tag_command_real_execute;
#line 1656 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) 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 14167 "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 14176 "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 14188 "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 14207 "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 14301 "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 14309 "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 14320 "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 14332 "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 14342 "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 14352 "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 14374 "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 14405 "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 14418 "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 14429 "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 14441 "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 14469 "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 14476 "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 14485 "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 14498 "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 14515 "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 14531 "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 14542 "Commands.c"
			}
#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (source);
#line 14546 "Commands.c"
		}
#line 1729 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 14550 "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.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1380 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (old != NULL, NULL);
#line 1380 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (replacement != NULL, NULL);
#line 14564 "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.34/vapi/glib-2.0.vapi"
		_tmp0_ = old;
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp1_ = g_regex_escape_string (_tmp0_, -1);
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp2_ = _tmp1_;
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp3_ = g_regex_new (_tmp2_, 0, 0, &_inner_error_);
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp4_ = _tmp3_;
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_g_free0 (_tmp2_);
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		regex = _tmp4_;
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			if (_inner_error_->domain == G_REGEX_ERROR) {
#line 14595 "Commands.c"
				goto __catch463_g_regex_error;
			}
#line 1382 "/usr/share/vala-0.34/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.34/vapi/glib-2.0.vapi"
			g_clear_error (&_inner_error_);
#line 1382 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			return NULL;
#line 14604 "Commands.c"
		}
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp6_ = regex;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp7_ = replacement;
#line 1383 "/usr/share/vala-0.34/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.34/vapi/glib-2.0.vapi"
		_tmp5_ = _tmp8_;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			_g_regex_unref0 (regex);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			if (_inner_error_->domain == G_REGEX_ERROR) {
#line 14620 "Commands.c"
				goto __catch463_g_regex_error;
			}
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			_g_regex_unref0 (regex);
#line 1383 "/usr/share/vala-0.34/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.34/vapi/glib-2.0.vapi"
			g_clear_error (&_inner_error_);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
			return NULL;
#line 14631 "Commands.c"
		}
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp9_ = _tmp5_;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp5_ = NULL;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		result = _tmp9_;
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_g_free0 (_tmp5_);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_g_regex_unref0 (regex);
#line 1383 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		return result;
#line 14645 "Commands.c"
	}
	goto __finally463;
	__catch463_g_regex_error:
	{
		GError* e = NULL;
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		e = _inner_error_;
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_inner_error_ = NULL;
#line 1385 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		g_assert_not_reached ();
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_g_error_free0 (e);
#line 14659 "Commands.c"
	}
	__finally463:
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 1381 "/usr/share/vala-0.34/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.34/vapi/glib-2.0.vapi"
		g_clear_error (&_inner_error_);
#line 1381 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		return NULL;
#line 14670 "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 14711 "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 14717 "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 14724 "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, (GDestroyNotify) g_free, GEE_TYPE_SET, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 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 14750 "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 14772 "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 14800 "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 14838 "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, (GDestroyNotify) 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 14900 "Commands.c"
		}
#line 1748 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_t_list);
#line 14904 "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 14916 "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 14950 "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 14956 "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 14963 "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 14983 "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 15010 "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 15041 "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 15085 "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 15120 "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 15130 "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 15157 "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 15175 "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 15197 "Commands.c"
				}
#line 1777 "/home/jens/Source/shotwell/src/Commands.vala"
				_g_object_unref0 (_s_it);
#line 15201 "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 15207 "Commands.c"
		}
#line 1767 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_child_subpath_it);
#line 15211 "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 15219 "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 15251 "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 15257 "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 15264 "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 15284 "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 15297 "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 15313 "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 15329 "Commands.c"
		}
#line 1790 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_s_it);
#line 15333 "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 15341 "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, (GDestroyNotify) 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, (GDestroyNotify) 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 15452 "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 15472 "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 15478 "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 15494 "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 15500 "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, (GDestroyNotify) 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 15552 "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 15558 "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 15584 "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 15590 "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 15597 "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 15633 "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 15639 "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 15664 "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 15672 "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 15686 "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 15693 "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 15704 "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 15710 "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 15720 "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 15742 "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 15750 "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 15771 "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 15785 "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 15792 "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 15803 "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 15809 "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 15819 "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 15841 "Commands.c"
				}
			}
		}
#line 1848 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (to_children);
#line 15847 "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 15853 "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 15874 "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 15888 "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 15895 "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 15906 "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 15912 "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 15922 "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 15944 "Commands.c"
				}
			}
		}
#line 1856 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (to_children);
#line 15950 "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 15958 "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.34/vapi/glib-2.0.vapi"
	_tmp0_ = str;
#line 1295 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp1_ = maxlen;
#line 1295 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_);
#line 1295 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	end = _tmp2_;
#line 1296 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp3_ = end;
#line 1296 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp3_ == NULL) {
#line 15981 "Commands.c"
		glong _tmp4_ = 0L;
#line 1297 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp4_ = maxlen;
#line 1297 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		result = _tmp4_;
#line 1297 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		return result;
#line 15989 "Commands.c"
	} else {
		gchar* _tmp5_ = NULL;
		gchar* _tmp6_ = NULL;
#line 1299 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp5_ = end;
#line 1299 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp6_ = str;
#line 1299 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		result = (glong) (_tmp5_ - _tmp6_);
#line 1299 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		return result;
#line 16001 "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.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp1_ = offset;
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp1_ >= ((glong) 0)) {
#line 16025 "Commands.c"
		glong _tmp2_ = 0L;
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp2_ = len;
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp0_ = _tmp2_ >= ((glong) 0);
#line 16031 "Commands.c"
	} else {
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp0_ = FALSE;
#line 16035 "Commands.c"
	}
#line 1308 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp0_) {
#line 16039 "Commands.c"
		glong _tmp3_ = 0L;
		glong _tmp4_ = 0L;
		glong _tmp5_ = 0L;
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp3_ = offset;
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp4_ = len;
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp5_ = string_strnlen ((gchar*) self, _tmp3_ + _tmp4_);
#line 1310 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		string_length = _tmp5_;
#line 16051 "Commands.c"
	} else {
		gint _tmp6_ = 0;
		gint _tmp7_ = 0;
#line 1312 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp6_ = strlen (self);
#line 1312 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp7_ = _tmp6_;
#line 1312 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		string_length = (glong) _tmp7_;
#line 16061 "Commands.c"
	}
#line 1315 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp8_ = offset;
#line 1315 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp8_ < ((glong) 0)) {
#line 16067 "Commands.c"
		glong _tmp9_ = 0L;
		glong _tmp10_ = 0L;
		glong _tmp11_ = 0L;
#line 1316 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp9_ = string_length;
#line 1316 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp10_ = offset;
#line 1316 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		offset = _tmp9_ + _tmp10_;
#line 1317 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp11_ = offset;
#line 1317 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		g_return_val_if_fail (_tmp11_ >= ((glong) 0), NULL);
#line 16081 "Commands.c"
	} else {
		glong _tmp12_ = 0L;
		glong _tmp13_ = 0L;
#line 1319 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp12_ = offset;
#line 1319 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp13_ = string_length;
#line 1319 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		g_return_val_if_fail (_tmp12_ <= _tmp13_, NULL);
#line 16091 "Commands.c"
	}
#line 1321 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp14_ = len;
#line 1321 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	if (_tmp14_ < ((glong) 0)) {
#line 16097 "Commands.c"
		glong _tmp15_ = 0L;
		glong _tmp16_ = 0L;
#line 1322 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp15_ = string_length;
#line 1322 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		_tmp16_ = offset;
#line 1322 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
		len = _tmp15_ - _tmp16_;
#line 16106 "Commands.c"
	}
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp17_ = offset;
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp18_ = len;
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp19_ = string_length;
#line 1324 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	g_return_val_if_fail ((_tmp17_ + _tmp18_) <= _tmp19_, NULL);
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp20_ = offset;
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp21_ = len;
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	_tmp22_ = g_strndup (((gchar*) self) + _tmp20_, (gsize) _tmp21_);
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	result = _tmp22_;
#line 1325 "/usr/share/vala-0.34/vapi/glib-2.0.vapi"
	return result;
#line 16126 "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 16153 "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 16170 "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 16176 "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 16183 "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 16193 "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 16199 "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 16205 "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 16212 "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 16218 "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 16257 "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 16289 "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 16321 "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 16332 "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 16342 "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 16362 "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, (GDestroyNotify) 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 16386 "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 16399 "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 16420 "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 16446 "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 16461 "Commands.c"
						}
#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
						_g_object_unref0 (source);
#line 16465 "Commands.c"
					}
#line 1884 "/home/jens/Source/shotwell/src/Commands.vala"
					_g_object_unref0 (_source_it);
#line 16469 "Commands.c"
				}
#line 1879 "/home/jens/Source/shotwell/src/Commands.vala"
				_g_object_unref0 (starting_sources);
#line 16473 "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 16479 "Commands.c"
		}
#line 1874 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_t_list);
#line 16483 "Commands.c"
	}
	{
		gint i = 0;
#line 1890 "/home/jens/Source/shotwell/src/Commands.vala"
		i = 0;
#line 16489 "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 16496 "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 16509 "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 16515 "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 16531 "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 16549 "Commands.c"
			}
		}
	}
	{
		gint i = 0;
#line 1893 "/home/jens/Source/shotwell/src/Commands.vala"
		i = 0;
#line 16557 "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 16564 "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 16577 "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 16583 "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 16599 "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 16617 "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 16625 "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 16654 "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 16660 "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 16667 "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 16693 "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 16721 "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 16747 "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 16775 "Commands.c"
			}
#line 1905 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (_kidtag_list);
#line 16779 "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 16795 "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 16878 "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 16906 "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 16932 "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 16960 "Commands.c"
			}
#line 1915 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (_kidtag_list);
#line 16964 "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 16974 "Commands.c"
	}
#line 1863 "/home/jens/Source/shotwell/src/Commands.vala"
	_g_free0 (unwind_target);
#line 16978 "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, (GDestroyNotify) 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 17042 "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 17056 "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 17063 "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 17074 "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 17080 "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 17090 "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 17112 "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 17120 "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 17132 "Commands.c"
	{
		gint i = 0;
#line 1941 "/home/jens/Source/shotwell/src/Commands.vala"
		i = 0;
#line 17137 "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 17144 "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 17157 "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 17163 "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 17179 "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 17197 "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 17221 "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 17242 "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 17272 "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 17283 "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 17307 "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 17326 "Commands.c"
				} else {
#line 1957 "/home/jens/Source/shotwell/src/Commands.vala"
					g_assert_not_reached ();
#line 17330 "Commands.c"
				}
			}
#line 1950 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_free0 (immediate_parent_path);
#line 17335 "Commands.c"
		}
#line 1948 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (parent_paths);
#line 17339 "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 17345 "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 17351 "Commands.c"
	}
#line 1945 "/home/jens/Source/shotwell/src/Commands.vala"
	_g_object_unref0 (new_parent);
#line 17355 "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 17387 "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, (GDestroyNotify) g_free, GEE_TYPE_SET, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 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 17395 "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 17419 "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 17440 "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 17464 "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 17489 "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 17505 "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, (GDestroyNotify) 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 17522 "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 17544 "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 17564 "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 17580 "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 17586 "Commands.c"
			}
#line 1971 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (_source_it);
#line 17590 "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 17619 "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 17633 "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 17641 "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 17668 "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 17688 "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 17714 "Commands.c"
				}
#line 1996 "/home/jens/Source/shotwell/src/Commands.vala"
				_g_object_unref0 (_s_it);
#line 17718 "Commands.c"
			}
#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_free0 (p);
#line 17722 "Commands.c"
		}
#line 1995 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_p_it);
#line 17726 "Commands.c"
	}
#line 1964 "/home/jens/Source/shotwell/src/Commands.vala"
	_g_object_unref0 (from_tag);
#line 17730 "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 17742 "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 17769 "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 17783 "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 17791 "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 17818 "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 17836 "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 17858 "Commands.c"
				}
#line 2004 "/home/jens/Source/shotwell/src/Commands.vala"
				_g_object_unref0 (_s_it);
#line 17862 "Commands.c"
			}
#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_free0 (p);
#line 17866 "Commands.c"
		}
#line 2003 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_p_it);
#line 17870 "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 17883 "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 17910 "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 17924 "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 17932 "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 17959 "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 17979 "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 18005 "Commands.c"
				}
#line 2012 "/home/jens/Source/shotwell/src/Commands.vala"
				_g_object_unref0 (_s_it);
#line 18009 "Commands.c"
			}
#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_free0 (p);
#line 18013 "Commands.c"
		}
#line 2011 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_p_it);
#line 18017 "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 18030 "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 18057 "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 18071 "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 18079 "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 18106 "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 18124 "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 18146 "Commands.c"
				}
#line 2020 "/home/jens/Source/shotwell/src/Commands.vala"
				_g_object_unref0 (_s_it);
#line 18150 "Commands.c"
			}
#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_free0 (p);
#line 18154 "Commands.c"
		}
#line 2019 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_p_it);
#line 18158 "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, (GDestroyNotify) g_free, GEE_TYPE_SET, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) 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 18209 "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 18233 "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 18250 "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 18266 "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 18285 "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 18301 "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, (GDestroyNotify) 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 18318 "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 18328 "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 18348 "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 18360 "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 18366 "Commands.c"
		}
#line 2034 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 18370 "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 18395 "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 18411 "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 18427 "Commands.c"
		}
#line 2048 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 18431 "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 18439 "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 18453 "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 18460 "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 18488 "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 18494 "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 18504 "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 18564 "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 18588 "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 18604 "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 18620 "Commands.c"
					}
#line 2063 "/home/jens/Source/shotwell/src/Commands.vala"
					_g_object_unref0 (_source_it);
#line 18624 "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 18632 "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 18642 "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 18679 "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 18690 "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 18704 "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 18718 "Commands.c"
	{
		gint i = 0;
#line 2080 "/home/jens/Source/shotwell/src/Commands.vala"
		i = 0;
#line 18723 "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 18730 "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 18745 "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 18751 "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 18767 "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 18791 "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 18815 "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 18828 "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 18853 "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 18884 "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 18916 "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 18922 "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 18950 "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 18956 "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 = (void (*)(Command*)) reparent_tag_command_real_execute;
#line 1679 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) reparent_tag_command_real_undo;
#line 1679 "/home/jens/Source/shotwell/src/Commands.vala"
	G_OBJECT_CLASS (klass)->finalize = reparent_tag_command_finalize;
#line 18972 "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, (GDestroyNotify) 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 19002 "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 19052 "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 19071 "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 19115 "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 19143 "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 19169 "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 19199 "Commands.c"
			}
#line 2151 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (_tag_list);
#line 19203 "Commands.c"
		}
	}
#line 2160 "/home/jens/Source/shotwell/src/Commands.vala"
	_tmp23_ = gee_tree_set_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) 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 19210 "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 19223 "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 19246 "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 19282 "Commands.c"
		}
#line 2161 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_new_tag_it);
#line 19286 "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 19300 "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 19326 "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 19370 "Commands.c"
		}
#line 2168 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_path_it);
#line 19374 "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 19382 "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 19389 "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 19397 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 19425 "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 19451 "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 19479 "Commands.c"
		}
#line 2186 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_proxy_list);
#line 19483 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 19512 "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 19536 "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 19560 "Commands.c"
		}
#line 2189 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_proxy_list);
#line 19564 "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 19573 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 19601 "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 19627 "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 19655 "Commands.c"
		}
#line 2194 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_proxy_list);
#line 19659 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 19688 "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 19712 "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 19736 "Commands.c"
		}
#line 2197 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_proxy_list);
#line 19740 "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 19758 "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 = (void (*)(Command*)) modify_tags_command_real_execute;
#line 2138 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) modify_tags_command_real_undo;
#line 2138 "/home/jens/Source/shotwell/src/Commands.vala"
	G_OBJECT_CLASS (klass)->finalize = modify_tags_command_finalize;
#line 19773 "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, (GDestroyNotify) 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, (GDestroyNotify) source_proxy_unref, NULL, NULL, NULL);
#line 2141 "/home/jens/Source/shotwell/src/Commands.vala"
	self->priv->to_remove = _tmp1_;
#line 19790 "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 19798 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 19826 "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 19848 "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 19866 "Commands.c"
		}
#line 2178 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_proxy_list);
#line 19870 "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_ABSTRACT_COLLECTION, GeeAbstractCollection));
#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 19899 "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 19921 "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 19939 "Commands.c"
		}
#line 2181 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_proxy_list);
#line 19943 "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 19953 "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 19972 "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 19997 "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 20019 "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 20042 "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 20080 "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 20087 "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 20102 "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 20108 "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 20115 "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 20131 "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 20137 "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 20144 "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 20159 "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, (GDestroyNotify) 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 20186 "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 20198 "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 20214 "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 20220 "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 20245 "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 20264 "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 20288 "Commands.c"
		}
#line 2262 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_detached_tag_it);
#line 20292 "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 20300 "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 20314 "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 20341 "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 20370 "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 20390 "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 20400 "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 20413 "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 20430 "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 20446 "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 20461 "Commands.c"
						}
#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
						_g_object_unref0 (ms);
#line 20465 "Commands.c"
					}
#line 2281 "/home/jens/Source/shotwell/src/Commands.vala"
					_g_object_unref0 (_ms_it);
#line 20469 "Commands.c"
				}
#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
				_g_object_unref0 (t);
#line 20473 "Commands.c"
			}
#line 2280 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (_t_list);
#line 20477 "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 20512 "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 20523 "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 = (void (*)(SimpleProxyableCommand*, DataSource*)) tag_untag_photos_command_real_execute_on_source;
#line 2206 "/home/jens/Source/shotwell/src/Commands.vala"
	((SimpleProxyableCommandClass *) klass)->undo_on_source = (void (*)(SimpleProxyableCommand*, DataSource*)) 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 20539 "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 20550 "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 20582 "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 20674 "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 20681 "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 20700 "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 20714 "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 20734 "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 20748 "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 = (void (*)(Command*)) rename_saved_search_command_real_execute;
#line 2299 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) 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 20764 "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 20771 "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 20787 "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 20854 "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 20861 "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 20882 "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 20895 "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 = (void (*)(Command*)) delete_saved_search_command_real_execute;
#line 2323 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) 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 20910 "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 20917 "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 20929 "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 20948 "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 20969 "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 20975 "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 20982 "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 20988 "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 20994 "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 21001 "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 21027 "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 21034 "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 21069 "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 21075 "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 21081 "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 21088 "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 21120 "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 21129 "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 21162 "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 21180 "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 21186 "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 21195 "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 21205 "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 21211 "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 21217 "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 21229 "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 21262 "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 21280 "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 21286 "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 21295 "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 21305 "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 21311 "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 21317 "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 21329 "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 21379 "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 21392 "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 21409 "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 21427 "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 21447 "Commands.c"
			}
#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (source);
#line 21451 "Commands.c"
		}
#line 2412 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 21455 "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 21473 "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 21523 "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 21536 "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 21553 "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 21571 "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 21591 "Commands.c"
			}
#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (source);
#line 21595 "Commands.c"
		}
#line 2429 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 21599 "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 21617 "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 21645 "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 21656 "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 = (void (*)(Command*)) trash_untrash_photos_command_real_execute;
#line 2341 "/home/jens/Source/shotwell/src/Commands.vala"
	((CommandClass *) klass)->undo = (void (*)(Command*)) 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 21672 "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 21679 "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 21707 "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 21740 "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 21746 "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 21753 "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 21761 "Commands.c"
	} else {
#line 2464 "/home/jens/Source/shotwell/src/Commands.vala"
		_tmp4_ = FLAG_UNFLAG_COMMAND_UNFLAG_SELECTED_STRING;
#line 21765 "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 21783 "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 21794 "Commands.c"
		} else {
#line 2470 "/home/jens/Source/shotwell/src/Commands.vala"
			_tmp11_ = FLAG_UNFLAG_COMMAND_UNFLAG_PROGRESS;
#line 21798 "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 21812 "Commands.c"
	}
#line 2461 "/home/jens/Source/shotwell/src/Commands.vala"
	return self;
#line 21816 "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 21823 "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 21837 "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 21850 "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 21868 "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 21890 "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 21915 "Commands.c"
			}
#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
			_g_object_unref0 (source);
#line 21919 "Commands.c"
		}
#line 2479 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 21923 "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 21929 "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 21935 "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 21946 "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 21959 "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 21975 "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 21991 "Commands.c"
		}
#line 2496 "/home/jens/Source/shotwell/src/Commands.vala"
		_g_object_unref0 (_source_it);
#line 21995 "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 22019 "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 22025 "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 22031 "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 22038 "Commands.c"
		}
	}
#line 2500 "/home/jens/Source/shotwell/src/Commands.vala"
	_g_object_unref0 (flaggable);
#line 22043 "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 = (void (*)(MultipleDataSourceAtOnceCommand*, GeeCollection*)) flag_unflag_command_real_execute_on_all;
#line 2451 "/home/jens/Source/shotwell/src/Commands.vala"
	((MultipleDataSourceAtOnceCommandClass *) klass)->undo_on_all = (void (*)(MultipleDataSourceAtOnceCommand*, GeeCollection*)) 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 22058 "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 22067 "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 22079 "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;
}



