summaryrefslogtreecommitdiff
path: root/src/dialogs
diff options
context:
space:
mode:
Diffstat (limited to 'src/dialogs')
-rw-r--r--src/dialogs/AdjustDateTimeDialog.c2353
-rw-r--r--src/dialogs/AdjustDateTimeDialog.vala343
-rw-r--r--src/dialogs/EntryMultiCompletion.c1124
-rw-r--r--src/dialogs/EntryMultiCompletion.vala97
-rw-r--r--src/dialogs/ExportDialog.c2107
-rw-r--r--src/dialogs/ExportDialog.vala343
-rw-r--r--src/dialogs/MultiTextEntryDialog.c286
-rw-r--r--src/dialogs/MultiTextEntryDialog.vala43
-rw-r--r--src/dialogs/Preferences.c3245
-rw-r--r--src/dialogs/Preferences.vala468
-rw-r--r--src/dialogs/ProgressDialog.c715
-rw-r--r--src/dialogs/ProgressDialog.vala178
-rw-r--r--src/dialogs/SetBackground.c274
-rw-r--r--src/dialogs/SetBackground.vala38
-rw-r--r--src/dialogs/SetBackgroundSlideshow.c474
-rw-r--r--src/dialogs/SetBackgroundSlideshow.vala78
-rw-r--r--src/dialogs/TextEntry.c398
-rw-r--r--src/dialogs/TextEntry.vala66
-rw-r--r--src/dialogs/WelcomeDialog.c1377
-rw-r--r--src/dialogs/WelcomeDialog.vala208
20 files changed, 14215 insertions, 0 deletions
diff --git a/src/dialogs/AdjustDateTimeDialog.c b/src/dialogs/AdjustDateTimeDialog.c
new file mode 100644
index 0000000..9eb3020
--- /dev/null
+++ b/src/dialogs/AdjustDateTimeDialog.c
@@ -0,0 +1,2353 @@
+/* AdjustDateTimeDialog.c generated by valac 0.36.6, the Vala compiler
+ * generated from AdjustDateTimeDialog.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <time.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib/gi18n-lib.h>
+#include <float.h>
+#include <math.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+
+#define TYPE_ADJUST_DATE_TIME_DIALOG (adjust_date_time_dialog_get_type ())
+#define ADJUST_DATE_TIME_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADJUST_DATE_TIME_DIALOG, AdjustDateTimeDialog))
+#define ADJUST_DATE_TIME_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADJUST_DATE_TIME_DIALOG, AdjustDateTimeDialogClass))
+#define IS_ADJUST_DATE_TIME_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADJUST_DATE_TIME_DIALOG))
+#define IS_ADJUST_DATE_TIME_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADJUST_DATE_TIME_DIALOG))
+#define ADJUST_DATE_TIME_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADJUST_DATE_TIME_DIALOG, AdjustDateTimeDialogClass))
+
+typedef struct _AdjustDateTimeDialog AdjustDateTimeDialog;
+typedef struct _AdjustDateTimeDialogClass AdjustDateTimeDialogClass;
+typedef struct _AdjustDateTimeDialogPrivate AdjustDateTimeDialogPrivate;
+
+#define ADJUST_DATE_TIME_DIALOG_TYPE_TIME_SYSTEM (adjust_date_time_dialog_time_system_get_type ())
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#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_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_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_CONFIGURATION_FACADE (configuration_facade_get_type ())
+#define CONFIGURATION_FACADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CONFIGURATION_FACADE, ConfigurationFacade))
+#define CONFIGURATION_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CONFIGURATION_FACADE, ConfigurationFacadeClass))
+#define IS_CONFIGURATION_FACADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CONFIGURATION_FACADE))
+#define IS_CONFIGURATION_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CONFIGURATION_FACADE))
+#define CONFIGURATION_FACADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CONFIGURATION_FACADE, ConfigurationFacadeClass))
+
+typedef struct _ConfigurationFacade ConfigurationFacade;
+typedef struct _ConfigurationFacadeClass ConfigurationFacadeClass;
+
+#define CONFIG_TYPE_FACADE (config_facade_get_type ())
+#define CONFIG_FACADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONFIG_TYPE_FACADE, ConfigFacade))
+#define CONFIG_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONFIG_TYPE_FACADE, ConfigFacadeClass))
+#define CONFIG_IS_FACADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONFIG_TYPE_FACADE))
+#define CONFIG_IS_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONFIG_TYPE_FACADE))
+#define CONFIG_FACADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONFIG_TYPE_FACADE, ConfigFacadeClass))
+
+typedef struct _ConfigFacade ConfigFacade;
+typedef struct _ConfigFacadeClass ConfigFacadeClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#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 _AdjustDateTimeDialog {
+ GtkDialog parent_instance;
+ AdjustDateTimeDialogPrivate * priv;
+};
+
+struct _AdjustDateTimeDialogClass {
+ GtkDialogClass parent_class;
+};
+
+typedef enum {
+ ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_AM,
+ ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_PM,
+ ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_24HR
+} AdjustDateTimeDialogTimeSystem;
+
+struct _AdjustDateTimeDialogPrivate {
+ gboolean no_original_time;
+ time_t original_time;
+ GtkLabel* original_time_label;
+ GtkCalendar* calendar;
+ GtkSpinButton* hour;
+ GtkSpinButton* minute;
+ GtkSpinButton* second;
+ GtkComboBoxText* system;
+ GtkRadioButton* relativity_radio_button;
+ GtkRadioButton* batch_radio_button;
+ GtkCheckButton* modify_originals_check_button;
+ GtkLabel* notification;
+ AdjustDateTimeDialogTimeSystem previous_time_system;
+};
+
+struct _DateableIface {
+ GTypeInterface parent_iface;
+ void (*set_exposure_time) (Dateable* self, time_t target_time);
+ time_t (*get_exposure_time) (Dateable* self);
+};
+
+
+static gpointer adjust_date_time_dialog_parent_class = NULL;
+
+GType adjust_date_time_dialog_get_type (void) G_GNUC_CONST;
+static GType adjust_date_time_dialog_time_system_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
+#define ADJUST_DATE_TIME_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ADJUST_DATE_TIME_DIALOG, AdjustDateTimeDialogPrivate))
+enum {
+ ADJUST_DATE_TIME_DIALOG_DUMMY_PROPERTY
+};
+#define ADJUST_DATE_TIME_DIALOG_SECONDS_IN_DAY ((gint64) ((60 * 60) * 24))
+#define ADJUST_DATE_TIME_DIALOG_SECONDS_IN_HOUR ((gint64) (60 * 60))
+#define ADJUST_DATE_TIME_DIALOG_SECONDS_IN_MINUTE ((gint64) 60)
+#define ADJUST_DATE_TIME_DIALOG_YEAR_OFFSET 1900
+#define ADJUST_DATE_TIME_DIALOG_CALENDAR_THUMBNAIL_SCALE 1
+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 dateable_get_type (void) G_GNUC_CONST;
+AdjustDateTimeDialog* adjust_date_time_dialog_new (Dateable* source, gint photo_count, gboolean display_options, gboolean contains_video, gboolean only_video);
+AdjustDateTimeDialog* adjust_date_time_dialog_construct (GType object_type, Dateable* source, gint photo_count, gboolean display_options, gboolean contains_video, gboolean only_video);
+gint resources_use_header_bar (void);
+GType page_window_get_type (void) G_GNUC_CONST;
+GType app_window_get_type (void) G_GNUC_CONST;
+AppWindow* app_window_get_instance (void);
+#define RESOURCES_CANCEL_LABEL _ ("_Cancel")
+#define RESOURCES_OK_LABEL _ ("_OK")
+#define RESOURCES_ADJUST_DATE_TIME_LABEL _ ("Adjust Date and Time")
+static void adjust_date_time_dialog_on_time_changed (AdjustDateTimeDialog* self);
+static void _adjust_date_time_dialog_on_time_changed_gtk_calendar_day_selected (GtkCalendar* _sender, gpointer self);
+static void _adjust_date_time_dialog_on_time_changed_gtk_calendar_month_changed (GtkCalendar* _sender, gpointer self);
+static void _adjust_date_time_dialog_on_time_changed_gtk_calendar_next_year (GtkCalendar* _sender, gpointer self);
+static void _adjust_date_time_dialog_on_time_changed_gtk_calendar_prev_year (GtkCalendar* _sender, gpointer self);
+GType configuration_facade_get_type (void) G_GNUC_CONST;
+GType config_facade_get_type (void) G_GNUC_CONST;
+ConfigFacade* config_facade_get_instance (void);
+gboolean configuration_facade_get_use_24_hour_time (ConfigurationFacade* self);
+static gboolean adjust_date_time_dialog_on_spin_button_output (AdjustDateTimeDialog* self, GtkSpinButton* button);
+static gboolean _adjust_date_time_dialog_on_spin_button_output_gtk_spin_button_output (GtkSpinButton* _sender, gpointer self);
+static void adjust_date_time_dialog_on_time_system_changed (AdjustDateTimeDialog* self);
+static void _adjust_date_time_dialog_on_time_system_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self);
+gboolean configuration_facade_get_keep_relativity (ConfigurationFacade* self);
+static void _adjust_date_time_dialog_on_time_changed_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self);
+gboolean configuration_facade_get_commit_metadata_to_masters (ConfigurationFacade* self);
+GdkPixbuf* thumbnail_source_get_thumbnail (ThumbnailSource* self, gint scale, GError** error);
+gchar* data_object_to_string (DataObject* self);
+time_t dateable_get_exposure_time (Dateable* self);
+static void adjust_date_time_dialog_set_time (AdjustDateTimeDialog* self, struct tm* time);
+static void adjust_date_time_dialog_set_original_time_label (AdjustDateTimeDialog* self, gboolean use_24_hr_format);
+static time_t adjust_date_time_dialog_get_time (AdjustDateTimeDialog* self);
+gboolean adjust_date_time_dialog_execute (AdjustDateTimeDialog* self, gint64* time_shift, gboolean* keep_relativity, gboolean* modify_originals);
+void configuration_facade_set_keep_relativity (ConfigurationFacade* self, gboolean keep_relativity);
+void configuration_facade_set_modify_originals (ConfigurationFacade* self, gboolean modify_originals);
+void configuration_facade_set_use_24_hour_time (ConfigurationFacade* self, gboolean use_24_hour_time);
+static void adjust_date_time_dialog_finalize (GObject * obj);
+
+
+static GType adjust_date_time_dialog_time_system_get_type (void) {
+ static volatile gsize adjust_date_time_dialog_time_system_type_id__volatile = 0;
+ if (g_once_init_enter (&adjust_date_time_dialog_time_system_type_id__volatile)) {
+ static const GEnumValue values[] = {{ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_AM, "ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_AM", "am"}, {ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_PM, "ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_PM", "pm"}, {ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_24HR, "ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_24HR", "24hr"}, {0, NULL, NULL}};
+ GType adjust_date_time_dialog_time_system_type_id;
+ adjust_date_time_dialog_time_system_type_id = g_enum_register_static ("AdjustDateTimeDialogTimeSystem", values);
+ g_once_init_leave (&adjust_date_time_dialog_time_system_type_id__volatile, adjust_date_time_dialog_time_system_type_id);
+ }
+ return adjust_date_time_dialog_time_system_type_id__volatile;
+}
+
+
+static void _adjust_date_time_dialog_on_time_changed_gtk_calendar_day_selected (GtkCalendar* _sender, gpointer self) {
+#line 53 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_on_time_changed ((AdjustDateTimeDialog*) self);
+#line 241 "AdjustDateTimeDialog.c"
+}
+
+
+static void _adjust_date_time_dialog_on_time_changed_gtk_calendar_month_changed (GtkCalendar* _sender, gpointer self) {
+#line 54 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_on_time_changed ((AdjustDateTimeDialog*) self);
+#line 248 "AdjustDateTimeDialog.c"
+}
+
+
+static void _adjust_date_time_dialog_on_time_changed_gtk_calendar_next_year (GtkCalendar* _sender, gpointer self) {
+#line 55 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_on_time_changed ((AdjustDateTimeDialog*) self);
+#line 255 "AdjustDateTimeDialog.c"
+}
+
+
+static void _adjust_date_time_dialog_on_time_changed_gtk_calendar_prev_year (GtkCalendar* _sender, gpointer self) {
+#line 56 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_on_time_changed ((AdjustDateTimeDialog*) self);
+#line 262 "AdjustDateTimeDialog.c"
+}
+
+
+static gboolean _adjust_date_time_dialog_on_spin_button_output_gtk_spin_button_output (GtkSpinButton* _sender, gpointer self) {
+ gboolean result;
+ result = adjust_date_time_dialog_on_spin_button_output ((AdjustDateTimeDialog*) self, _sender);
+#line 63 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ return result;
+#line 271 "AdjustDateTimeDialog.c"
+}
+
+
+static void _adjust_date_time_dialog_on_time_system_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self) {
+#line 81 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_on_time_system_changed ((AdjustDateTimeDialog*) self);
+#line 278 "AdjustDateTimeDialog.c"
+}
+
+
+static void _adjust_date_time_dialog_on_time_changed_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) {
+#line 103 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_on_time_changed ((AdjustDateTimeDialog*) self);
+#line 285 "AdjustDateTimeDialog.c"
+}
+
+
+static void g_time_gm (time_t time, struct tm* result) {
+ struct tm _result_ = {0};
+ struct tm _tmp0_ = {0};
+#line 2841 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ gmtime_r (&time, &_tmp0_);
+#line 2841 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _result_ = _tmp0_;
+#line 2842 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ *result = _result_;
+#line 2842 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return;
+#line 300 "AdjustDateTimeDialog.c"
+}
+
+
+static gchar* g_time_format (struct tm *self, const gchar* format) {
+ gchar* result = NULL;
+ gchar* buffer = NULL;
+ gchar* _tmp0_;
+ gint buffer_length1;
+ gint _buffer_size_;
+ gchar* _tmp1_;
+ gint _tmp1__length1;
+ const gchar* _tmp2_;
+ gchar* _tmp3_;
+ gint _tmp3__length1;
+ gchar* _tmp4_;
+#line 2854 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (format != NULL, NULL);
+#line 2855 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp0_ = g_new0 (gchar, 64);
+#line 2855 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ buffer = _tmp0_;
+#line 2855 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ buffer_length1 = 64;
+#line 2855 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _buffer_size_ = buffer_length1;
+#line 2856 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp1_ = buffer;
+#line 2856 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp1__length1 = buffer_length1;
+#line 2856 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp2_ = format;
+#line 2856 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ strftime (_tmp1_, _tmp1__length1, _tmp2_, &(*self));
+#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp3_ = buffer;
+#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp3__length1 = buffer_length1;
+#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp4_ = g_strdup ((const gchar*) _tmp3_);
+#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ result = _tmp4_;
+#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ buffer = (g_free (buffer), NULL);
+#line 2857 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return result;
+#line 346 "AdjustDateTimeDialog.c"
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ return self ? g_object_ref (self) : NULL;
+#line 353 "AdjustDateTimeDialog.c"
+}
+
+
+static void g_time_local (time_t time, struct tm* result) {
+ struct tm _result_ = {0};
+ struct tm _tmp0_ = {0};
+#line 2846 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ localtime_r (&time, &_tmp0_);
+#line 2846 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _result_ = _tmp0_;
+#line 2847 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ *result = _result_;
+#line 2847 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return;
+#line 368 "AdjustDateTimeDialog.c"
+}
+
+
+AdjustDateTimeDialog* adjust_date_time_dialog_construct (GType object_type, Dateable* source, gint photo_count, gboolean display_options, gboolean contains_video, gboolean only_video) {
+ AdjustDateTimeDialog * self = NULL;
+ Dateable* _tmp0_;
+ gint _tmp1_;
+ AppWindow* _tmp2_;
+ AppWindow* _tmp3_;
+ GtkCalendar* _tmp4_;
+ GtkCalendar* _tmp5_;
+ GtkCalendar* _tmp6_;
+ GtkCalendar* _tmp7_;
+ GtkCalendar* _tmp8_;
+ GtkCalendar* _tmp9_;
+ ConfigFacade* _tmp10_;
+ ConfigFacade* _tmp11_;
+ gboolean _tmp12_;
+ gboolean _tmp13_;
+ GtkSpinButton* _tmp16_;
+ GtkSpinButton* _tmp17_;
+ GtkSpinButton* _tmp18_;
+ GtkSpinButton* _tmp19_;
+ GtkSpinButton* _tmp20_;
+ GtkSpinButton* _tmp21_;
+ GtkSpinButton* _tmp22_;
+ GtkSpinButton* _tmp23_;
+ GtkSpinButton* _tmp24_;
+ GtkSpinButton* _tmp25_;
+ GtkSpinButton* _tmp26_;
+ GtkComboBoxText* _tmp27_;
+ GtkComboBoxText* _tmp28_;
+ GtkComboBoxText* _tmp29_;
+ GtkComboBoxText* _tmp30_;
+ GtkComboBoxText* _tmp31_;
+ GtkBox* clock = NULL;
+ GtkBox* _tmp32_;
+ GtkBox* _tmp33_;
+ GtkSpinButton* _tmp34_;
+ GtkBox* _tmp35_;
+ GtkLabel* _tmp36_;
+ GtkLabel* _tmp37_;
+ GtkBox* _tmp38_;
+ GtkSpinButton* _tmp39_;
+ GtkBox* _tmp40_;
+ GtkLabel* _tmp41_;
+ GtkLabel* _tmp42_;
+ GtkBox* _tmp43_;
+ GtkSpinButton* _tmp44_;
+ GtkBox* _tmp45_;
+ GtkComboBoxText* _tmp46_;
+ GtkRadioButton* _tmp47_;
+ GtkRadioButton* _tmp48_;
+ ConfigFacade* _tmp49_;
+ ConfigFacade* _tmp50_;
+ gboolean _tmp51_;
+ gboolean _tmp52_ = FALSE;
+ gboolean _tmp53_;
+ GtkRadioButton* _tmp55_;
+ GtkRadioButton* _tmp56_;
+ GSList* _tmp57_;
+ GtkRadioButton* _tmp58_;
+ GtkRadioButton* _tmp59_;
+ ConfigFacade* _tmp60_;
+ ConfigFacade* _tmp61_;
+ gboolean _tmp62_;
+ gboolean _tmp63_ = FALSE;
+ gboolean _tmp64_;
+ GtkRadioButton* _tmp66_;
+ GtkRadioButton* _tmp67_;
+ gboolean _tmp68_;
+ gboolean _tmp77_ = FALSE;
+ ConfigFacade* _tmp78_;
+ ConfigFacade* _tmp79_;
+ gboolean _tmp80_;
+ gboolean _tmp81_;
+ GtkCheckButton* _tmp83_;
+ gboolean _tmp84_ = FALSE;
+ gboolean _tmp85_;
+ GtkCheckButton* _tmp92_;
+ GtkBox* time_content = NULL;
+ GtkBox* _tmp93_;
+ GtkBox* picker = NULL;
+ GtkBox* _tmp94_;
+ GtkComboBoxText* combo = NULL;
+ GtkComboBoxText* _tmp95_;
+ GtkBox* _tmp104_;
+ GtkComboBoxText* _tmp105_;
+ GtkSpinButton* spin = NULL;
+ GtkSpinButton* _tmp106_;
+ GtkBox* _tmp107_;
+ GtkSpinButton* _tmp108_;
+ GtkSpinButton* _tmp109_;
+ GtkCalendar* _tmp110_;
+ GtkComboBoxText* _tmp111_;
+ GtkCalendar* _tmp112_;
+ GtkBox* _tmp113_;
+ GtkBox* _tmp114_;
+ GtkBox* _tmp115_;
+ GtkCalendar* _tmp116_;
+ GtkBox* _tmp117_;
+ GtkBox* _tmp118_;
+ gboolean _tmp119_;
+ GdkPixbuf* preview = NULL;
+ GtkBox* image_content = NULL;
+ GtkBox* _tmp133_;
+ GtkBox* _tmp134_;
+ GtkBox* _tmp135_;
+ GtkImage* _tmp136_ = NULL;
+ GdkPixbuf* _tmp137_;
+ GtkImage* image = NULL;
+ GtkImage* _tmp141_;
+ GtkLabel* _tmp142_;
+ GtkBox* _tmp143_;
+ GtkImage* _tmp144_;
+ GtkBox* _tmp145_;
+ GtkLabel* _tmp146_;
+ GtkBox* hbox = NULL;
+ GtkBox* _tmp147_;
+ GtkBox* _tmp148_;
+ GtkBox* _tmp149_;
+ GtkBox* _tmp150_;
+ GtkBox* _tmp151_;
+ GtkBox* _tmp152_;
+ GtkBox* _tmp153_;
+ GtkBox* _tmp154_;
+ GtkBox* _tmp155_;
+ GtkBox* _tmp156_;
+ GtkBox* _tmp157_;
+ GtkBox* _tmp158_;
+ GtkLabel* _tmp159_;
+ GtkLabel* _tmp160_;
+ GtkLabel* _tmp161_;
+ GtkBox* _tmp162_;
+ GtkLabel* _tmp163_;
+ Dateable* _tmp164_;
+ time_t _tmp165_;
+ time_t _tmp166_;
+ time_t _tmp168_;
+ struct tm _tmp169_ = {0};
+ ConfigFacade* _tmp170_;
+ ConfigFacade* _tmp171_;
+ gboolean _tmp172_;
+ GError * _inner_error_ = NULL;
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_return_val_if_fail (IS_DATEABLE (source), NULL);
+#line 39 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp0_ = source;
+#line 39 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _vala_assert (_tmp0_ != NULL, "source != null");
+#line 41 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp1_ = resources_use_header_bar ();
+#line 41 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self = (AdjustDateTimeDialog*) g_object_new (object_type, "use-header-bar", _tmp1_, NULL);
+#line 43 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_window_set_modal (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), TRUE);
+#line 44 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_window_set_resizable (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), FALSE);
+#line 45 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp2_ = app_window_get_instance ();
+#line 45 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp3_ = _tmp2_;
+#line 45 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_window_set_transient_for (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, gtk_window_get_type (), GtkWindow));
+#line 45 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp3_);
+#line 47 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_dialog_add_buttons (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), RESOURCES_CANCEL_LABEL, GTK_RESPONSE_CANCEL, RESOURCES_OK_LABEL, GTK_RESPONSE_OK, NULL);
+#line 49 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_window_set_title (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), RESOURCES_ADJUST_DATE_TIME_LABEL);
+#line 51 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp4_ = (GtkCalendar*) gtk_calendar_new ();
+#line 51 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp4_);
+#line 51 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->calendar);
+#line 51 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->calendar = _tmp4_;
+#line 52 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp5_ = self->priv->calendar;
+#line 52 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_set (_tmp5_, "show-heading", FALSE, NULL);
+#line 53 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp6_ = self->priv->calendar;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_signal_connect_object (_tmp6_, "day-selected", (GCallback) _adjust_date_time_dialog_on_time_changed_gtk_calendar_day_selected, self, 0);
+#line 54 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp7_ = self->priv->calendar;
+#line 54 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_signal_connect_object (_tmp7_, "month-changed", (GCallback) _adjust_date_time_dialog_on_time_changed_gtk_calendar_month_changed, self, 0);
+#line 55 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp8_ = self->priv->calendar;
+#line 55 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_signal_connect_object (_tmp8_, "next-year", (GCallback) _adjust_date_time_dialog_on_time_changed_gtk_calendar_next_year, self, 0);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp9_ = self->priv->calendar;
+#line 56 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_signal_connect_object (_tmp9_, "prev-year", (GCallback) _adjust_date_time_dialog_on_time_changed_gtk_calendar_prev_year, self, 0);
+#line 58 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp10_ = config_facade_get_instance ();
+#line 58 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp11_ = _tmp10_;
+#line 58 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp12_ = configuration_facade_get_use_24_hour_time (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 58 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp13_ = _tmp12_;
+#line 58 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp11_);
+#line 58 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp13_) {
+#line 579 "AdjustDateTimeDialog.c"
+ GtkSpinButton* _tmp14_;
+#line 59 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp14_ = (GtkSpinButton*) gtk_spin_button_new_with_range ((gdouble) 0, (gdouble) 23, (gdouble) 1);
+#line 59 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp14_);
+#line 59 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->hour);
+#line 59 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->hour = _tmp14_;
+#line 589 "AdjustDateTimeDialog.c"
+ } else {
+ GtkSpinButton* _tmp15_;
+#line 61 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp15_ = (GtkSpinButton*) gtk_spin_button_new_with_range ((gdouble) 1, (gdouble) 12, (gdouble) 1);
+#line 61 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp15_);
+#line 61 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->hour);
+#line 61 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->hour = _tmp15_;
+#line 600 "AdjustDateTimeDialog.c"
+ }
+#line 63 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp16_ = self->priv->hour;
+#line 63 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_signal_connect_object (_tmp16_, "output", (GCallback) _adjust_date_time_dialog_on_spin_button_output_gtk_spin_button_output, self, 0);
+#line 64 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp17_ = self->priv->hour;
+#line 64 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_entry_set_width_chars (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, gtk_entry_get_type (), GtkEntry), 2);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp18_ = self->priv->hour;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_entry_set_max_width_chars (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, gtk_entry_get_type (), GtkEntry), 2);
+#line 67 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp19_ = (GtkSpinButton*) gtk_spin_button_new_with_range ((gdouble) 0, (gdouble) 59, (gdouble) 1);
+#line 67 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp19_);
+#line 67 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->minute);
+#line 67 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->minute = _tmp19_;
+#line 68 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp20_ = self->priv->minute;
+#line 68 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_entry_set_width_chars (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, gtk_entry_get_type (), GtkEntry), 2);
+#line 69 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp21_ = self->priv->minute;
+#line 69 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_entry_set_max_width_chars (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, gtk_entry_get_type (), GtkEntry), 2);
+#line 70 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp22_ = self->priv->minute;
+#line 70 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_signal_connect_object (_tmp22_, "output", (GCallback) _adjust_date_time_dialog_on_spin_button_output_gtk_spin_button_output, self, 0);
+#line 72 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp23_ = (GtkSpinButton*) gtk_spin_button_new_with_range ((gdouble) 0, (gdouble) 59, (gdouble) 1);
+#line 72 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp23_);
+#line 72 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->second);
+#line 72 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->second = _tmp23_;
+#line 73 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp24_ = self->priv->second;
+#line 73 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_entry_set_width_chars (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, gtk_entry_get_type (), GtkEntry), 2);
+#line 74 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp25_ = self->priv->second;
+#line 74 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_entry_set_max_width_chars (G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, gtk_entry_get_type (), GtkEntry), 2);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp26_ = self->priv->second;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_signal_connect_object (_tmp26_, "output", (GCallback) _adjust_date_time_dialog_on_spin_button_output_gtk_spin_button_output, self, 0);
+#line 77 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp27_ = (GtkComboBoxText*) gtk_combo_box_text_new ();
+#line 77 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp27_);
+#line 77 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->system);
+#line 77 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->system = _tmp27_;
+#line 78 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp28_ = self->priv->system;
+#line 78 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_combo_box_text_append_text (_tmp28_, _ ("AM"));
+#line 79 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp29_ = self->priv->system;
+#line 79 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_combo_box_text_append_text (_tmp29_, _ ("PM"));
+#line 80 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp30_ = self->priv->system;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_combo_box_text_append_text (_tmp30_, _ ("24 Hr"));
+#line 81 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp31_ = self->priv->system;
+#line 81 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, gtk_combo_box_get_type (), GtkComboBox), "changed", (GCallback) _adjust_date_time_dialog_on_time_system_changed_gtk_combo_box_changed, self, 0);
+#line 83 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp32_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
+#line 83 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp32_);
+#line 83 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ clock = _tmp32_;
+#line 85 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp33_ = clock;
+#line 85 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp34_ = self->priv->hour;
+#line 85 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp33_, G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 86 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp35_ = clock;
+#line 86 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp36_ = (GtkLabel*) gtk_label_new (":");
+#line 86 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp36_);
+#line 86 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp37_ = _tmp36_;
+#line 86 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp35_, G_TYPE_CHECK_INSTANCE_CAST (_tmp37_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 86 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp37_);
+#line 87 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp38_ = clock;
+#line 87 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp39_ = self->priv->minute;
+#line 87 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp38_, G_TYPE_CHECK_INSTANCE_CAST (_tmp39_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 88 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp40_ = clock;
+#line 88 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp41_ = (GtkLabel*) gtk_label_new (":");
+#line 88 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp41_);
+#line 88 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp42_ = _tmp41_;
+#line 88 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp40_, G_TYPE_CHECK_INSTANCE_CAST (_tmp42_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 88 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp42_);
+#line 89 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp43_ = clock;
+#line 89 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp44_ = self->priv->second;
+#line 89 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp43_, G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 90 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp45_ = clock;
+#line 90 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp46_ = self->priv->system;
+#line 90 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp45_, G_TYPE_CHECK_INSTANCE_CAST (_tmp46_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 92 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_dialog_set_default_response (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), (gint) GTK_RESPONSE_OK);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp47_ = (GtkRadioButton*) gtk_radio_button_new_with_mnemonic (NULL, _ ("_Shift photos/videos by the same amount"));
+#line 94 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp47_);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->relativity_radio_button);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->relativity_radio_button = _tmp47_;
+#line 96 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp48_ = self->priv->relativity_radio_button;
+#line 96 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp49_ = config_facade_get_instance ();
+#line 96 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp50_ = _tmp49_;
+#line 96 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp51_ = configuration_facade_get_keep_relativity (G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 96 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp48_, gtk_toggle_button_get_type (), GtkToggleButton), _tmp51_);
+#line 96 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp50_);
+#line 97 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp53_ = display_options;
+#line 97 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp53_) {
+#line 758 "AdjustDateTimeDialog.c"
+ gint _tmp54_;
+#line 97 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp54_ = photo_count;
+#line 97 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp52_ = _tmp54_ > 1;
+#line 764 "AdjustDateTimeDialog.c"
+ } else {
+#line 97 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp52_ = FALSE;
+#line 768 "AdjustDateTimeDialog.c"
+ }
+#line 97 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp55_ = self->priv->relativity_radio_button;
+#line 97 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp55_, gtk_widget_get_type (), GtkWidget), _tmp52_);
+#line 99 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp56_ = self->priv->relativity_radio_button;
+#line 99 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp57_ = gtk_radio_button_get_group (_tmp56_);
+#line 99 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp58_ = (GtkRadioButton*) gtk_radio_button_new_with_mnemonic (_tmp57_, _ ("Set _all photos/videos to this time"));
+#line 99 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp58_);
+#line 99 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->batch_radio_button);
+#line 99 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->batch_radio_button = _tmp58_;
+#line 101 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp59_ = self->priv->batch_radio_button;
+#line 101 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp60_ = config_facade_get_instance ();
+#line 101 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp61_ = _tmp60_;
+#line 101 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp62_ = configuration_facade_get_keep_relativity (G_TYPE_CHECK_INSTANCE_CAST (_tmp61_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 101 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, gtk_toggle_button_get_type (), GtkToggleButton), !_tmp62_);
+#line 101 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp61_);
+#line 102 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp64_ = display_options;
+#line 102 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp64_) {
+#line 802 "AdjustDateTimeDialog.c"
+ gint _tmp65_;
+#line 102 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp65_ = photo_count;
+#line 102 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp63_ = _tmp65_ > 1;
+#line 808 "AdjustDateTimeDialog.c"
+ } else {
+#line 102 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp63_ = FALSE;
+#line 812 "AdjustDateTimeDialog.c"
+ }
+#line 102 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp66_ = self->priv->batch_radio_button;
+#line 102 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp66_, gtk_widget_get_type (), GtkWidget), _tmp63_);
+#line 103 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp67_ = self->priv->batch_radio_button;
+#line 103 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp67_, gtk_toggle_button_get_type (), GtkToggleButton), "toggled", (GCallback) _adjust_date_time_dialog_on_time_changed_gtk_toggle_button_toggled, self, 0);
+#line 105 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp68_ = contains_video;
+#line 105 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp68_) {
+#line 826 "AdjustDateTimeDialog.c"
+ gchar* text = NULL;
+ gint _tmp69_;
+ gchar* _tmp70_;
+ const gchar* _tmp71_;
+ GtkCheckButton* _tmp72_;
+#line 106 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp69_ = photo_count;
+#line 106 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp70_ = g_strdup (ngettext ("_Modify original photo file", "_Modify original photo files", (gulong) _tmp69_));
+#line 106 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ text = _tmp70_;
+#line 108 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp71_ = text;
+#line 108 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp72_ = (GtkCheckButton*) gtk_check_button_new_with_mnemonic (_tmp71_);
+#line 108 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp72_);
+#line 108 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->modify_originals_check_button);
+#line 108 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->modify_originals_check_button = _tmp72_;
+#line 105 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_free0 (text);
+#line 850 "AdjustDateTimeDialog.c"
+ } else {
+ gchar* text = NULL;
+ gint _tmp73_;
+ gchar* _tmp74_;
+ const gchar* _tmp75_;
+ GtkCheckButton* _tmp76_;
+#line 110 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp73_ = photo_count;
+#line 110 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp74_ = g_strdup (ngettext ("_Modify original file", "_Modify original files", (gulong) _tmp73_));
+#line 110 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ text = _tmp74_;
+#line 111 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp75_ = text;
+#line 111 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp76_ = (GtkCheckButton*) gtk_check_button_new_with_mnemonic (_tmp75_);
+#line 111 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp76_);
+#line 111 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->modify_originals_check_button);
+#line 111 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->modify_originals_check_button = _tmp76_;
+#line 105 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_free0 (text);
+#line 875 "AdjustDateTimeDialog.c"
+ }
+#line 114 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp78_ = config_facade_get_instance ();
+#line 114 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp79_ = _tmp78_;
+#line 114 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp80_ = configuration_facade_get_commit_metadata_to_masters (G_TYPE_CHECK_INSTANCE_CAST (_tmp79_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 114 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp81_ = _tmp80_;
+#line 114 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp79_);
+#line 114 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp81_) {
+#line 889 "AdjustDateTimeDialog.c"
+ gboolean _tmp82_;
+#line 115 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp82_ = display_options;
+#line 115 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp77_ = _tmp82_;
+#line 895 "AdjustDateTimeDialog.c"
+ } else {
+#line 114 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp77_ = FALSE;
+#line 899 "AdjustDateTimeDialog.c"
+ }
+#line 114 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp83_ = self->priv->modify_originals_check_button;
+#line 114 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp83_, gtk_toggle_button_get_type (), GtkToggleButton), _tmp77_);
+#line 116 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp85_ = only_video;
+#line 116 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (!_tmp85_) {
+#line 909 "AdjustDateTimeDialog.c"
+ gboolean _tmp86_ = FALSE;
+ ConfigFacade* _tmp87_;
+ ConfigFacade* _tmp88_;
+ gboolean _tmp89_;
+ gboolean _tmp90_;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp87_ = config_facade_get_instance ();
+#line 117 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp88_ = _tmp87_;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp89_ = configuration_facade_get_commit_metadata_to_masters (G_TYPE_CHECK_INSTANCE_CAST (_tmp88_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 117 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp90_ = !_tmp89_;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp88_);
+#line 117 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp90_) {
+#line 927 "AdjustDateTimeDialog.c"
+ gboolean _tmp91_;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp91_ = display_options;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp86_ = _tmp91_;
+#line 933 "AdjustDateTimeDialog.c"
+ } else {
+#line 117 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp86_ = FALSE;
+#line 937 "AdjustDateTimeDialog.c"
+ }
+#line 117 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp84_ = _tmp86_;
+#line 941 "AdjustDateTimeDialog.c"
+ } else {
+#line 116 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp84_ = FALSE;
+#line 945 "AdjustDateTimeDialog.c"
+ }
+#line 116 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp92_ = self->priv->modify_originals_check_button;
+#line 116 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp92_, gtk_widget_get_type (), GtkWidget), _tmp84_);
+#line 119 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp93_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
+#line 119 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp93_);
+#line 119 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time_content = _tmp93_;
+#line 121 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp94_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
+#line 121 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp94_);
+#line 121 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ picker = _tmp94_;
+#line 122 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp95_ = (GtkComboBoxText*) gtk_combo_box_text_new ();
+#line 122 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp95_);
+#line 122 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ combo = _tmp95_;
+#line 969 "AdjustDateTimeDialog.c"
+ {
+ gint i = 0;
+#line 123 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ i = 0;
+#line 974 "AdjustDateTimeDialog.c"
+ {
+ gboolean _tmp96_ = FALSE;
+#line 123 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp96_ = TRUE;
+#line 123 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ while (TRUE) {
+#line 981 "AdjustDateTimeDialog.c"
+ gint _tmp98_;
+ GtkComboBoxText* _tmp99_;
+ gint _tmp100_;
+ struct tm _tmp101_ = {0};
+ gchar* _tmp102_;
+ gchar* _tmp103_;
+#line 123 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (!_tmp96_) {
+#line 990 "AdjustDateTimeDialog.c"
+ gint _tmp97_;
+#line 123 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp97_ = i;
+#line 123 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ i = _tmp97_ + 1;
+#line 996 "AdjustDateTimeDialog.c"
+ }
+#line 123 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp96_ = FALSE;
+#line 123 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp98_ = i;
+#line 123 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (!(_tmp98_ < 12)) {
+#line 123 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ break;
+#line 1006 "AdjustDateTimeDialog.c"
+ }
+#line 124 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp99_ = combo;
+#line 124 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp100_ = i;
+#line 124 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_time_gm ((time_t) (_tmp100_ * 2764800), &_tmp101_);
+#line 124 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp102_ = g_time_format (&_tmp101_, "%B");
+#line 124 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp103_ = _tmp102_;
+#line 124 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_combo_box_text_append_text (_tmp99_, _tmp103_);
+#line 124 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_free0 (_tmp103_);
+#line 1022 "AdjustDateTimeDialog.c"
+ }
+ }
+ }
+#line 126 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp104_ = picker;
+#line 126 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp105_ = combo;
+#line 126 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp104_, G_TYPE_CHECK_INSTANCE_CAST (_tmp105_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 128 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp106_ = (GtkSpinButton*) gtk_spin_button_new_with_range ((gdouble) 0, (gdouble) (G_MAXINT >> 9), (gdouble) 1);
+#line 128 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp106_);
+#line 128 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ spin = _tmp106_;
+#line 129 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp107_ = picker;
+#line 129 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp108_ = spin;
+#line 129 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_end (_tmp107_, G_TYPE_CHECK_INSTANCE_CAST (_tmp108_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 130 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp109_ = spin;
+#line 130 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp110_ = self->priv->calendar;
+#line 130 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_bind_property_with_closures (G_TYPE_CHECK_INSTANCE_CAST (_tmp109_, G_TYPE_OBJECT, GObject), "value", G_TYPE_CHECK_INSTANCE_CAST (_tmp110_, G_TYPE_OBJECT, GObject), "year", G_BINDING_BIDIRECTIONAL, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
+#line 131 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp111_ = combo;
+#line 131 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp112_ = self->priv->calendar;
+#line 131 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_bind_property_with_closures (G_TYPE_CHECK_INSTANCE_CAST (_tmp111_, G_TYPE_OBJECT, GObject), "active", G_TYPE_CHECK_INSTANCE_CAST (_tmp112_, G_TYPE_OBJECT, GObject), "month", G_BINDING_BIDIRECTIONAL, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
+#line 133 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp113_ = time_content;
+#line 133 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp114_ = picker;
+#line 133 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp113_, G_TYPE_CHECK_INSTANCE_CAST (_tmp114_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 134 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp115_ = time_content;
+#line 134 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp116_ = self->priv->calendar;
+#line 134 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp115_, G_TYPE_CHECK_INSTANCE_CAST (_tmp116_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 135 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp117_ = time_content;
+#line 135 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp118_ = clock;
+#line 135 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp117_, G_TYPE_CHECK_INSTANCE_CAST (_tmp118_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 137 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp119_ = display_options;
+#line 137 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp119_) {
+#line 1078 "AdjustDateTimeDialog.c"
+ GtkBox* _tmp120_;
+ GtkRadioButton* _tmp121_;
+ GtkBox* _tmp122_;
+ GtkRadioButton* _tmp123_;
+ GtkBox* _tmp124_;
+ GtkCheckButton* _tmp125_;
+#line 138 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp120_ = time_content;
+#line 138 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp121_ = self->priv->relativity_radio_button;
+#line 138 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp120_, G_TYPE_CHECK_INSTANCE_CAST (_tmp121_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 139 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp122_ = time_content;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp123_ = self->priv->batch_radio_button;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp122_, G_TYPE_CHECK_INSTANCE_CAST (_tmp123_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 140 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp124_ = time_content;
+#line 140 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp125_ = self->priv->modify_originals_check_button;
+#line 140 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp124_, G_TYPE_CHECK_INSTANCE_CAST (_tmp125_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 1103 "AdjustDateTimeDialog.c"
+ }
+#line 143 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ preview = NULL;
+#line 1107 "AdjustDateTimeDialog.c"
+ {
+ GdkPixbuf* _tmp126_ = NULL;
+ Dateable* _tmp127_;
+ GdkPixbuf* _tmp128_;
+ GdkPixbuf* _tmp129_;
+#line 147 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp127_ = source;
+#line 147 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp128_ = thumbnail_source_get_thumbnail (G_TYPE_CHECK_INSTANCE_CAST (_tmp127_, TYPE_THUMBNAIL_SOURCE, ThumbnailSource), ADJUST_DATE_TIME_DIALOG_CALENDAR_THUMBNAIL_SCALE, &_inner_error_);
+#line 147 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp126_ = _tmp128_;
+#line 147 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1121 "AdjustDateTimeDialog.c"
+ goto __catch25_g_error;
+ }
+#line 147 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp129_ = _tmp126_;
+#line 147 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp126_ = NULL;
+#line 147 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (preview);
+#line 147 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ preview = _tmp129_;
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp126_);
+#line 1134 "AdjustDateTimeDialog.c"
+ }
+ goto __finally25;
+ __catch25_g_error:
+ {
+ GError* err = NULL;
+ Dateable* _tmp130_;
+ gchar* _tmp131_;
+ gchar* _tmp132_;
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ err = _inner_error_;
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _inner_error_ = NULL;
+#line 149 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp130_ = source;
+#line 149 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp131_ = data_object_to_string (G_TYPE_CHECK_INSTANCE_CAST (_tmp130_, TYPE_DATA_OBJECT, DataObject));
+#line 149 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp132_ = _tmp131_;
+#line 149 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_warning ("AdjustDateTimeDialog.vala:149: Unable to fetch preview for %s", _tmp132_);
+#line 149 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_free0 (_tmp132_);
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_error_free0 (err);
+#line 1159 "AdjustDateTimeDialog.c"
+ }
+ __finally25:
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (preview);
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (spin);
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (combo);
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (picker);
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (time_content);
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (clock);
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.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 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_clear_error (&_inner_error_);
+#line 144 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ return NULL;
+#line 1182 "AdjustDateTimeDialog.c"
+ }
+#line 152 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp133_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+#line 152 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp133_);
+#line 152 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ image_content = _tmp133_;
+#line 153 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp134_ = image_content;
+#line 153 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_set_valign (G_TYPE_CHECK_INSTANCE_CAST (_tmp134_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_START);
+#line 154 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp135_ = image_content;
+#line 154 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_set_homogeneous (_tmp135_, TRUE);
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp137_ = preview;
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp137_ != NULL) {
+#line 1202 "AdjustDateTimeDialog.c"
+ GdkPixbuf* _tmp138_;
+ GtkImage* _tmp139_;
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp138_ = preview;
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp139_ = (GtkImage*) gtk_image_new_from_pixbuf (_tmp138_);
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp139_);
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp136_);
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp136_ = _tmp139_;
+#line 1215 "AdjustDateTimeDialog.c"
+ } else {
+ GtkImage* _tmp140_;
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp140_ = (GtkImage*) gtk_image_new ();
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp140_);
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp136_);
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp136_ = _tmp140_;
+#line 1226 "AdjustDateTimeDialog.c"
+ }
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp141_ = _g_object_ref0 (_tmp136_);
+#line 155 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ image = _tmp141_;
+#line 156 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp142_ = (GtkLabel*) gtk_label_new (NULL);
+#line 156 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp142_);
+#line 156 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->original_time_label);
+#line 156 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->original_time_label = _tmp142_;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp143_ = image_content;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp144_ = image;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp143_, G_TYPE_CHECK_INSTANCE_CAST (_tmp144_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 158 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp145_ = image_content;
+#line 158 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp146_ = self->priv->original_time_label;
+#line 158 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp145_, G_TYPE_CHECK_INSTANCE_CAST (_tmp146_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 160 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp147_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
+#line 160 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp147_);
+#line 160 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ hbox = _tmp147_;
+#line 161 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp148_ = hbox;
+#line 161 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_container_set_border_width (G_TYPE_CHECK_INSTANCE_CAST (_tmp148_, gtk_container_get_type (), GtkContainer), (guint) 3);
+#line 162 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp149_ = hbox;
+#line 162 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp150_ = image_content;
+#line 162 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp149_, G_TYPE_CHECK_INSTANCE_CAST (_tmp150_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 163 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp151_ = hbox;
+#line 163 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp152_ = time_content;
+#line 163 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (_tmp151_, G_TYPE_CHECK_INSTANCE_CAST (_tmp152_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 164 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp153_ = hbox;
+#line 164 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (_tmp153_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_CENTER);
+#line 165 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp154_ = hbox;
+#line 165 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_set_valign (G_TYPE_CHECK_INSTANCE_CAST (_tmp154_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_CENTER);
+#line 166 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp155_ = hbox;
+#line 166 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_set_hexpand (G_TYPE_CHECK_INSTANCE_CAST (_tmp155_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 167 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp156_ = hbox;
+#line 167 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_set_vexpand (G_TYPE_CHECK_INSTANCE_CAST (_tmp156_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 169 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp157_ = (GtkBox*) gtk_dialog_get_content_area (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog));
+#line 169 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp158_ = hbox;
+#line 169 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (G_TYPE_CHECK_INSTANCE_CAST (_tmp157_, gtk_box_get_type (), GtkBox), G_TYPE_CHECK_INSTANCE_CAST (_tmp158_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 171 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp159_ = (GtkLabel*) gtk_label_new ("");
+#line 171 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_ref_sink (_tmp159_);
+#line 171 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->notification);
+#line 171 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->notification = _tmp159_;
+#line 172 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp160_ = self->priv->notification;
+#line 172 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_label_set_line_wrap (_tmp160_, TRUE);
+#line 173 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp161_ = self->priv->notification;
+#line 173 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_label_set_justify (_tmp161_, GTK_JUSTIFY_CENTER);
+#line 175 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp162_ = (GtkBox*) gtk_dialog_get_content_area (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog));
+#line 175 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp163_ = self->priv->notification;
+#line 175 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_box_pack_start (G_TYPE_CHECK_INSTANCE_CAST (_tmp162_, gtk_box_get_type (), GtkBox), G_TYPE_CHECK_INSTANCE_CAST (_tmp163_, gtk_widget_get_type (), GtkWidget), TRUE, TRUE, (guint) 0);
+#line 177 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp164_ = source;
+#line 177 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp165_ = dateable_get_exposure_time (_tmp164_);
+#line 177 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->original_time = _tmp165_;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp166_ = self->priv->original_time;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp166_ == ((time_t) 0)) {
+#line 1328 "AdjustDateTimeDialog.c"
+ time_t _tmp167_;
+#line 180 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp167_ = time (NULL);
+#line 180 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->original_time = _tmp167_;
+#line 181 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->no_original_time = TRUE;
+#line 1336 "AdjustDateTimeDialog.c"
+ }
+#line 184 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp168_ = self->priv->original_time;
+#line 184 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_time_local (_tmp168_, &_tmp169_);
+#line 184 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_set_time (self, &_tmp169_);
+#line 185 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp170_ = config_facade_get_instance ();
+#line 185 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp171_ = _tmp170_;
+#line 185 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp172_ = configuration_facade_get_use_24_hour_time (G_TYPE_CHECK_INSTANCE_CAST (_tmp171_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 185 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_set_original_time_label (self, _tmp172_);
+#line 185 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp171_);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (hbox);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (image);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp136_);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (image_content);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (preview);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (spin);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (combo);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (picker);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (time_content);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (clock);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ return self;
+#line 1376 "AdjustDateTimeDialog.c"
+}
+
+
+AdjustDateTimeDialog* adjust_date_time_dialog_new (Dateable* source, gint photo_count, gboolean display_options, gboolean contains_video, gboolean only_video) {
+#line 37 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ return adjust_date_time_dialog_construct (TYPE_ADJUST_DATE_TIME_DIALOG, source, photo_count, display_options, contains_video, only_video);
+#line 1383 "AdjustDateTimeDialog.c"
+}
+
+
+static void adjust_date_time_dialog_set_time (AdjustDateTimeDialog* self, struct tm* time) {
+ GtkCalendar* _tmp0_;
+ struct tm _tmp1_;
+ gint _tmp2_;
+ struct tm _tmp3_;
+ gint _tmp4_;
+ GtkCalendar* _tmp5_;
+ struct tm _tmp6_;
+ gint _tmp7_;
+ GtkCalendar* _tmp8_;
+ GtkCalendar* _tmp9_;
+ ConfigFacade* _tmp10_;
+ ConfigFacade* _tmp11_;
+ gboolean _tmp12_;
+ gboolean _tmp13_;
+ GtkSpinButton* _tmp28_;
+ struct tm _tmp29_;
+ gint _tmp30_;
+ GtkSpinButton* _tmp31_;
+ struct tm _tmp32_;
+ gint _tmp33_;
+ GtkComboBoxText* _tmp34_;
+ gint _tmp35_;
+#line 188 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_return_if_fail (IS_ADJUST_DATE_TIME_DIALOG (self));
+#line 188 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_return_if_fail (time != NULL);
+#line 189 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp0_ = self->priv->calendar;
+#line 189 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp1_ = *time;
+#line 189 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp2_ = _tmp1_.tm_mon;
+#line 189 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp3_ = *time;
+#line 189 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp4_ = _tmp3_.tm_year;
+#line 189 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_calendar_select_month (_tmp0_, (guint) _tmp2_, (guint) (_tmp4_ + ADJUST_DATE_TIME_DIALOG_YEAR_OFFSET));
+#line 190 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp5_ = self->priv->calendar;
+#line 190 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp6_ = *time;
+#line 190 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp7_ = _tmp6_.tm_mday;
+#line 190 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_calendar_select_day (_tmp5_, (guint) _tmp7_);
+#line 191 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp8_ = self->priv->calendar;
+#line 191 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_notify (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, G_TYPE_OBJECT, GObject), "year");
+#line 192 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp9_ = self->priv->calendar;
+#line 192 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_notify (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, G_TYPE_OBJECT, GObject), "month");
+#line 194 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp10_ = config_facade_get_instance ();
+#line 194 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp11_ = _tmp10_;
+#line 194 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp12_ = configuration_facade_get_use_24_hour_time (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 194 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp13_ = _tmp12_;
+#line 194 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp11_);
+#line 194 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp13_) {
+#line 1454 "AdjustDateTimeDialog.c"
+ GtkComboBoxText* _tmp14_;
+ GtkSpinButton* _tmp15_;
+ struct tm _tmp16_;
+ gint _tmp17_;
+#line 195 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp14_ = self->priv->system;
+#line 195 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_combo_box_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, gtk_combo_box_get_type (), GtkComboBox), (gint) ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_24HR);
+#line 196 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp15_ = self->priv->hour;
+#line 196 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp16_ = *time;
+#line 196 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp17_ = _tmp16_.tm_hour;
+#line 196 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_spin_button_set_value (_tmp15_, (gdouble) _tmp17_);
+#line 1471 "AdjustDateTimeDialog.c"
+ } else {
+ gint AMPM_hour = 0;
+ struct tm _tmp18_;
+ gint _tmp19_;
+ gint _tmp20_ = 0;
+ gint _tmp21_;
+ GtkSpinButton* _tmp23_;
+ AdjustDateTimeDialogTimeSystem _tmp24_ = 0;
+ struct tm _tmp25_;
+ gint _tmp26_;
+ GtkComboBoxText* _tmp27_;
+#line 198 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp18_ = *time;
+#line 198 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp19_ = _tmp18_.tm_hour;
+#line 198 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ AMPM_hour = _tmp19_ % 12;
+#line 199 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp21_ = AMPM_hour;
+#line 199 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp21_ == 0) {
+#line 199 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp20_ = 12;
+#line 1495 "AdjustDateTimeDialog.c"
+ } else {
+ gint _tmp22_;
+#line 199 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp22_ = AMPM_hour;
+#line 199 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp20_ = _tmp22_;
+#line 1502 "AdjustDateTimeDialog.c"
+ }
+#line 199 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp23_ = self->priv->hour;
+#line 199 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_spin_button_set_value (_tmp23_, (gdouble) _tmp20_);
+#line 200 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp25_ = *time;
+#line 200 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp26_ = _tmp25_.tm_hour;
+#line 200 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp26_ >= 12) {
+#line 200 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp24_ = ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_PM;
+#line 1516 "AdjustDateTimeDialog.c"
+ } else {
+#line 200 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp24_ = ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_AM;
+#line 1520 "AdjustDateTimeDialog.c"
+ }
+#line 200 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp27_ = self->priv->system;
+#line 200 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_combo_box_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, gtk_combo_box_get_type (), GtkComboBox), (gint) _tmp24_);
+#line 1526 "AdjustDateTimeDialog.c"
+ }
+#line 203 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp28_ = self->priv->minute;
+#line 203 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp29_ = *time;
+#line 203 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp30_ = _tmp29_.tm_min;
+#line 203 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_spin_button_set_value (_tmp28_, (gdouble) _tmp30_);
+#line 204 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp31_ = self->priv->second;
+#line 204 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp32_ = *time;
+#line 204 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp33_ = _tmp32_.tm_sec;
+#line 204 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_spin_button_set_value (_tmp31_, (gdouble) _tmp33_);
+#line 206 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp34_ = self->priv->system;
+#line 206 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp35_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, gtk_combo_box_get_type (), GtkComboBox));
+#line 206 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->previous_time_system = (AdjustDateTimeDialogTimeSystem) _tmp35_;
+#line 1550 "AdjustDateTimeDialog.c"
+}
+
+
+static void adjust_date_time_dialog_set_original_time_label (AdjustDateTimeDialog* self, gboolean use_24_hr_format) {
+ gboolean _tmp0_;
+ const gchar* _tmp1_ = NULL;
+ gboolean _tmp2_;
+ GtkLabel* _tmp3_;
+ time_t _tmp4_;
+ struct tm _tmp5_ = {0};
+ gchar* _tmp6_;
+ gchar* _tmp7_;
+ gchar* _tmp8_;
+ gchar* _tmp9_;
+#line 209 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_return_if_fail (IS_ADJUST_DATE_TIME_DIALOG (self));
+#line 210 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp0_ = self->priv->no_original_time;
+#line 210 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp0_) {
+#line 211 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ return;
+#line 1573 "AdjustDateTimeDialog.c"
+ }
+#line 214 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp2_ = use_24_hr_format;
+#line 214 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp2_) {
+#line 214 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp1_ = _ ("%m/%d/%Y, %H:%M:%S");
+#line 1581 "AdjustDateTimeDialog.c"
+ } else {
+#line 215 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp1_ = _ ("%m/%d/%Y, %I:%M:%S %p");
+#line 1585 "AdjustDateTimeDialog.c"
+ }
+#line 213 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp3_ = self->priv->original_time_label;
+#line 213 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp4_ = self->priv->original_time;
+#line 213 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_time_local (_tmp4_, &_tmp5_);
+#line 213 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp6_ = g_time_format (&_tmp5_, _tmp1_);
+#line 213 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp7_ = _tmp6_;
+#line 213 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp8_ = g_strconcat (_ ("Original: "), _tmp7_, NULL);
+#line 213 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp9_ = _tmp8_;
+#line 213 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_label_set_text (_tmp3_, _tmp9_);
+#line 213 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_free0 (_tmp9_);
+#line 213 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_free0 (_tmp7_);
+#line 1607 "AdjustDateTimeDialog.c"
+}
+
+
+static time_t adjust_date_time_dialog_get_time (AdjustDateTimeDialog* self) {
+ time_t result = 0;
+ struct tm time = {0};
+ GtkSpinButton* _tmp0_;
+ gdouble _tmp1_;
+ GtkSpinButton* _tmp2_;
+ gdouble _tmp3_;
+ gint hour = 0;
+ GtkSpinButton* _tmp4_;
+ gdouble _tmp5_;
+ gint _tmp6_ = 0;
+ gboolean _tmp7_ = FALSE;
+ gint _tmp8_;
+ gint _tmp12_ = 0;
+ GtkComboBoxText* _tmp13_;
+ gint _tmp14_;
+ gint _tmp15_;
+ guint year = 0U;
+ guint month = 0U;
+ guint day = 0U;
+ GtkCalendar* _tmp16_;
+ guint _tmp17_ = 0U;
+ guint _tmp18_ = 0U;
+ guint _tmp19_ = 0U;
+ time_t _tmp20_;
+#line 218 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_return_val_if_fail (IS_ADJUST_DATE_TIME_DIALOG (self), 0);
+#line 219 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ memset (&time, 0, sizeof (struct tm));
+#line 221 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp0_ = self->priv->second;
+#line 221 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp1_ = gtk_spin_button_get_value (_tmp0_);
+#line 221 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time.tm_sec = (gint) _tmp1_;
+#line 222 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp2_ = self->priv->minute;
+#line 222 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp3_ = gtk_spin_button_get_value (_tmp2_);
+#line 222 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time.tm_min = (gint) _tmp3_;
+#line 225 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp4_ = self->priv->hour;
+#line 225 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp5_ = gtk_spin_button_get_value (_tmp4_);
+#line 225 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ hour = (gint) _tmp5_;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp8_ = hour;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp8_ == 12) {
+#line 1662 "AdjustDateTimeDialog.c"
+ GtkComboBoxText* _tmp9_;
+ gint _tmp10_;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp9_ = self->priv->system;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp10_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_combo_box_get_type (), GtkComboBox));
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp7_ = _tmp10_ != ((gint) ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_24HR);
+#line 1671 "AdjustDateTimeDialog.c"
+ } else {
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp7_ = FALSE;
+#line 1675 "AdjustDateTimeDialog.c"
+ }
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp7_) {
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp6_ = 0;
+#line 1681 "AdjustDateTimeDialog.c"
+ } else {
+ gint _tmp11_;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp11_ = hour;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp6_ = _tmp11_;
+#line 1688 "AdjustDateTimeDialog.c"
+ }
+#line 226 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time.tm_hour = _tmp6_;
+#line 227 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp13_ = self->priv->system;
+#line 227 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp14_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, gtk_combo_box_get_type (), GtkComboBox));
+#line 227 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp14_ == ((gint) ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_PM)) {
+#line 227 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp12_ = 12;
+#line 1700 "AdjustDateTimeDialog.c"
+ } else {
+#line 227 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp12_ = 0;
+#line 1704 "AdjustDateTimeDialog.c"
+ }
+#line 227 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp15_ = time.tm_hour;
+#line 227 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time.tm_hour = _tmp15_ + _tmp12_;
+#line 230 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp16_ = self->priv->calendar;
+#line 230 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_calendar_get_date (_tmp16_, &_tmp17_, &_tmp18_, &_tmp19_);
+#line 230 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ year = _tmp17_;
+#line 230 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ month = _tmp18_;
+#line 230 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ day = _tmp19_;
+#line 231 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time.tm_year = ((gint) year) - ADJUST_DATE_TIME_DIALOG_YEAR_OFFSET;
+#line 232 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time.tm_mon = (gint) month;
+#line 233 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time.tm_mday = (gint) day;
+#line 235 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time.tm_isdst = -1;
+#line 237 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp20_ = mktime (&time);
+#line 237 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ result = _tmp20_;
+#line 237 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ return result;
+#line 1734 "AdjustDateTimeDialog.c"
+}
+
+
+gboolean adjust_date_time_dialog_execute (AdjustDateTimeDialog* self, gint64* time_shift, gboolean* keep_relativity, gboolean* modify_originals) {
+ gint64 _vala_time_shift = 0LL;
+ gboolean _vala_keep_relativity = FALSE;
+ gboolean _vala_modify_originals = FALSE;
+ gboolean result = FALSE;
+ gboolean response = FALSE;
+ gint _tmp0_;
+#line 240 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_return_val_if_fail (IS_ADJUST_DATE_TIME_DIALOG (self), FALSE);
+#line 242 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 244 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ response = FALSE;
+#line 246 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp0_ = gtk_dialog_run (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog));
+#line 246 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp0_ == ((gint) GTK_RESPONSE_OK)) {
+#line 1755 "AdjustDateTimeDialog.c"
+ gboolean _tmp1_;
+ GtkRadioButton* _tmp5_;
+ gboolean _tmp6_;
+ GtkRadioButton* _tmp7_;
+ gboolean _tmp8_;
+ gboolean _tmp9_;
+ GtkCheckButton* _tmp13_;
+ gboolean _tmp14_;
+ GtkCheckButton* _tmp15_;
+ gboolean _tmp16_;
+ gboolean _tmp17_;
+#line 247 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp1_ = self->priv->no_original_time;
+#line 247 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp1_) {
+#line 1771 "AdjustDateTimeDialog.c"
+ time_t _tmp2_;
+#line 248 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp2_ = adjust_date_time_dialog_get_time (self);
+#line 248 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _vala_time_shift = (gint64) _tmp2_;
+#line 1777 "AdjustDateTimeDialog.c"
+ } else {
+ time_t _tmp3_;
+ time_t _tmp4_;
+#line 250 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp3_ = adjust_date_time_dialog_get_time (self);
+#line 250 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp4_ = self->priv->original_time;
+#line 250 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _vala_time_shift = (gint64) (_tmp3_ - _tmp4_);
+#line 1787 "AdjustDateTimeDialog.c"
+ }
+#line 252 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp5_ = self->priv->relativity_radio_button;
+#line 252 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp6_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 252 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _vala_keep_relativity = _tmp6_;
+#line 254 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp7_ = self->priv->relativity_radio_button;
+#line 254 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp8_ = gtk_widget_get_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, gtk_widget_get_type (), GtkWidget));
+#line 254 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp9_ = _tmp8_;
+#line 254 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp9_) {
+#line 1803 "AdjustDateTimeDialog.c"
+ ConfigFacade* _tmp10_;
+ ConfigFacade* _tmp11_;
+ gboolean _tmp12_;
+#line 255 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp10_ = config_facade_get_instance ();
+#line 255 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp11_ = _tmp10_;
+#line 255 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp12_ = _vala_keep_relativity;
+#line 255 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ configuration_facade_set_keep_relativity (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp12_);
+#line 255 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp11_);
+#line 1817 "AdjustDateTimeDialog.c"
+ }
+#line 257 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp13_ = self->priv->modify_originals_check_button;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp14_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 257 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _vala_modify_originals = _tmp14_;
+#line 259 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp15_ = self->priv->modify_originals_check_button;
+#line 259 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp16_ = gtk_widget_get_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, gtk_widget_get_type (), GtkWidget));
+#line 259 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp17_ = _tmp16_;
+#line 259 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp17_) {
+#line 1833 "AdjustDateTimeDialog.c"
+ ConfigFacade* _tmp18_;
+ ConfigFacade* _tmp19_;
+ gboolean _tmp20_;
+#line 260 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp18_ = config_facade_get_instance ();
+#line 260 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp19_ = _tmp18_;
+#line 260 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp20_ = _vala_modify_originals;
+#line 260 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ configuration_facade_set_modify_originals (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp20_);
+#line 260 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp19_);
+#line 1847 "AdjustDateTimeDialog.c"
+ }
+#line 262 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ response = TRUE;
+#line 1851 "AdjustDateTimeDialog.c"
+ } else {
+#line 264 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _vala_time_shift = (gint64) 0;
+#line 265 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _vala_keep_relativity = TRUE;
+#line 266 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _vala_modify_originals = FALSE;
+#line 1859 "AdjustDateTimeDialog.c"
+ }
+#line 269 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_destroy (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 271 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ result = response;
+#line 271 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (time_shift) {
+#line 271 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ *time_shift = _vala_time_shift;
+#line 1869 "AdjustDateTimeDialog.c"
+ }
+#line 271 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (keep_relativity) {
+#line 271 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ *keep_relativity = _vala_keep_relativity;
+#line 1875 "AdjustDateTimeDialog.c"
+ }
+#line 271 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (modify_originals) {
+#line 271 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ *modify_originals = _vala_modify_originals;
+#line 1881 "AdjustDateTimeDialog.c"
+ }
+#line 271 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ return result;
+#line 1885 "AdjustDateTimeDialog.c"
+}
+
+
+static gboolean adjust_date_time_dialog_on_spin_button_output (AdjustDateTimeDialog* self, GtkSpinButton* button) {
+ gboolean result = FALSE;
+ GtkSpinButton* _tmp0_;
+ GtkSpinButton* _tmp1_;
+ gdouble _tmp2_;
+ gchar* _tmp3_;
+ gchar* _tmp4_;
+#line 274 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_return_val_if_fail (IS_ADJUST_DATE_TIME_DIALOG (self), FALSE);
+#line 274 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_return_val_if_fail (GTK_IS_SPIN_BUTTON (button), FALSE);
+#line 275 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp0_ = button;
+#line 275 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp1_ = button;
+#line 275 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp2_ = gtk_spin_button_get_value (_tmp1_);
+#line 275 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp3_ = g_strdup_printf ("%02d", (gint) _tmp2_);
+#line 275 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp4_ = _tmp3_;
+#line 275 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_entry_set_text (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, gtk_entry_get_type (), GtkEntry), _tmp4_);
+#line 275 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_free0 (_tmp4_);
+#line 277 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_on_time_changed (self);
+#line 279 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ result = TRUE;
+#line 279 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ return result;
+#line 1920 "AdjustDateTimeDialog.c"
+}
+
+
+static void adjust_date_time_dialog_on_time_changed (AdjustDateTimeDialog* self) {
+ gint64 time_shift = 0LL;
+ time_t _tmp0_;
+ time_t _tmp1_;
+ GtkCalendar* _tmp2_;
+ GtkCalendar* _tmp3_;
+ GtkComboBoxText* _tmp4_;
+ gint _tmp5_;
+ gboolean _tmp6_ = FALSE;
+ gboolean _tmp7_ = FALSE;
+ gint64 _tmp8_;
+#line 282 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_return_if_fail (IS_ADJUST_DATE_TIME_DIALOG (self));
+#line 283 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp0_ = adjust_date_time_dialog_get_time (self);
+#line 283 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp1_ = self->priv->original_time;
+#line 283 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time_shift = ((gint64) _tmp0_) - ((gint64) _tmp1_);
+#line 284 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp2_ = self->priv->calendar;
+#line 284 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_notify (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, G_TYPE_OBJECT, GObject), "year");
+#line 285 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp3_ = self->priv->calendar;
+#line 285 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_object_notify (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, G_TYPE_OBJECT, GObject), "month");
+#line 287 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp4_ = self->priv->system;
+#line 287 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp5_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, gtk_combo_box_get_type (), GtkComboBox));
+#line 287 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->previous_time_system = (AdjustDateTimeDialogTimeSystem) _tmp5_;
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp8_ = time_shift;
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp8_ == ((gint64) 0)) {
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp7_ = TRUE;
+#line 1963 "AdjustDateTimeDialog.c"
+ } else {
+ gboolean _tmp9_;
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp9_ = self->priv->no_original_time;
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp7_ = _tmp9_;
+#line 1970 "AdjustDateTimeDialog.c"
+ }
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp7_) {
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp6_ = TRUE;
+#line 1976 "AdjustDateTimeDialog.c"
+ } else {
+ gboolean _tmp10_ = FALSE;
+ GtkRadioButton* _tmp11_;
+ gboolean _tmp12_;
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp11_ = self->priv->batch_radio_button;
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp12_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp12_) {
+#line 1987 "AdjustDateTimeDialog.c"
+ GtkRadioButton* _tmp13_;
+ gboolean _tmp14_;
+ gboolean _tmp15_;
+#line 290 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp13_ = self->priv->batch_radio_button;
+#line 290 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp14_ = gtk_widget_get_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, gtk_widget_get_type (), GtkWidget));
+#line 290 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp15_ = _tmp14_;
+#line 290 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp10_ = _tmp15_;
+#line 1999 "AdjustDateTimeDialog.c"
+ } else {
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp10_ = FALSE;
+#line 2003 "AdjustDateTimeDialog.c"
+ }
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp6_ = _tmp10_;
+#line 2007 "AdjustDateTimeDialog.c"
+ }
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp6_) {
+#line 2011 "AdjustDateTimeDialog.c"
+ GtkLabel* _tmp16_;
+#line 291 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp16_ = self->priv->notification;
+#line 291 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_hide (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, gtk_widget_get_type (), GtkWidget));
+#line 2017 "AdjustDateTimeDialog.c"
+ } else {
+ gboolean forward = FALSE;
+ gint64 _tmp17_;
+ gint days = 0;
+ gint hours = 0;
+ gint minutes = 0;
+ gint seconds = 0;
+ gint64 _tmp18_;
+ gint64 _tmp19_;
+ gint64 _tmp20_;
+ gint64 _tmp21_;
+ gint64 _tmp22_;
+ gint64 _tmp23_;
+ gint64 _tmp24_;
+ gint64 _tmp25_;
+ const gchar* _tmp26_ = NULL;
+ gboolean _tmp27_;
+ gchar* shift_status = NULL;
+ gchar* _tmp28_;
+ GtkLabel* _tmp29_;
+ const gchar* _tmp30_;
+ gint _tmp31_;
+ gint _tmp32_;
+ gint _tmp33_;
+ gint _tmp34_;
+ gint _tmp35_;
+ gint _tmp36_;
+ gint _tmp37_;
+ gint _tmp38_;
+ gchar* _tmp39_;
+ gchar* _tmp40_;
+ GtkLabel* _tmp41_;
+#line 293 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp17_ = time_shift;
+#line 293 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ forward = _tmp17_ > ((gint64) 0);
+#line 296 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp18_ = time_shift;
+#line 296 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp19_ = llabs (_tmp18_);
+#line 296 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time_shift = _tmp19_;
+#line 298 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp20_ = time_shift;
+#line 298 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ days = (gint) (_tmp20_ / ADJUST_DATE_TIME_DIALOG_SECONDS_IN_DAY);
+#line 299 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp21_ = time_shift;
+#line 299 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time_shift = _tmp21_ % ADJUST_DATE_TIME_DIALOG_SECONDS_IN_DAY;
+#line 300 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp22_ = time_shift;
+#line 300 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ hours = (gint) (_tmp22_ / ADJUST_DATE_TIME_DIALOG_SECONDS_IN_HOUR);
+#line 301 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp23_ = time_shift;
+#line 301 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time_shift = _tmp23_ % ADJUST_DATE_TIME_DIALOG_SECONDS_IN_HOUR;
+#line 302 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp24_ = time_shift;
+#line 302 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ minutes = (gint) (_tmp24_ / ADJUST_DATE_TIME_DIALOG_SECONDS_IN_MINUTE);
+#line 303 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp25_ = time_shift;
+#line 303 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ seconds = (gint) (_tmp25_ % ADJUST_DATE_TIME_DIALOG_SECONDS_IN_MINUTE);
+#line 305 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp27_ = forward;
+#line 305 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp27_) {
+#line 306 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp26_ = _ ("Exposure time will be shifted forward by\n" \
+"%d %s, %d %s, %d %s, and %d %s.");
+#line 2090 "AdjustDateTimeDialog.c"
+ } else {
+#line 307 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp26_ = _ ("Exposure time will be shifted backward by\n" \
+"%d %s, %d %s, %d %s, and %d %s.");
+#line 2094 "AdjustDateTimeDialog.c"
+ }
+#line 305 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp28_ = g_strdup (_tmp26_);
+#line 305 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ shift_status = _tmp28_;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp29_ = self->priv->notification;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp30_ = shift_status;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp31_ = days;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp32_ = days;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp33_ = hours;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp34_ = hours;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp35_ = minutes;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp36_ = minutes;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp37_ = seconds;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp38_ = seconds;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp39_ = g_strdup_printf (_tmp30_, _tmp31_, ngettext ("day", "days", (gulong) _tmp32_), _tmp33_, ngettext ("hour", "hours", (gulong) _tmp34_), _tmp35_, ngettext ("minute", "minutes", (gulong) _tmp36_), _tmp37_, ngettext ("second", "seconds", (gulong) _tmp38_));
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp40_ = _tmp39_;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_label_set_text (_tmp29_, _tmp40_);
+#line 309 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_free0 (_tmp40_);
+#line 314 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp41_ = self->priv->notification;
+#line 314 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_widget_show (G_TYPE_CHECK_INSTANCE_CAST (_tmp41_, gtk_widget_get_type (), GtkWidget));
+#line 289 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_free0 (shift_status);
+#line 2134 "AdjustDateTimeDialog.c"
+ }
+}
+
+
+static void adjust_date_time_dialog_on_time_system_changed (AdjustDateTimeDialog* self) {
+ AdjustDateTimeDialogTimeSystem _tmp0_;
+ GtkComboBoxText* _tmp1_;
+ gint _tmp2_;
+ ConfigFacade* _tmp3_;
+ ConfigFacade* _tmp4_;
+ GtkComboBoxText* _tmp5_;
+ gint _tmp6_;
+ GtkComboBoxText* _tmp7_;
+ gint _tmp8_;
+#line 318 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_return_if_fail (IS_ADJUST_DATE_TIME_DIALOG (self));
+#line 319 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp0_ = self->priv->previous_time_system;
+#line 319 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp1_ = self->priv->system;
+#line 319 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp2_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_combo_box_get_type (), GtkComboBox));
+#line 319 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp0_ == _tmp2_) {
+#line 320 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ return;
+#line 2161 "AdjustDateTimeDialog.c"
+ }
+#line 322 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp3_ = config_facade_get_instance ();
+#line 322 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp4_ = _tmp3_;
+#line 322 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp5_ = self->priv->system;
+#line 322 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp6_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_combo_box_get_type (), GtkComboBox));
+#line 322 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ configuration_facade_set_use_24_hour_time (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp6_ == ((gint) ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_24HR));
+#line 322 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (_tmp4_);
+#line 324 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp7_ = self->priv->system;
+#line 324 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp8_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, gtk_combo_box_get_type (), GtkComboBox));
+#line 324 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp8_ == ((gint) ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_24HR)) {
+#line 2181 "AdjustDateTimeDialog.c"
+ gint _tmp9_ = 0;
+ GtkSpinButton* _tmp10_;
+ gdouble _tmp11_;
+ gint time = 0;
+ gint _tmp14_ = 0;
+ AdjustDateTimeDialogTimeSystem _tmp15_;
+ gint _tmp16_;
+ GtkSpinButton* _tmp17_;
+ GtkSpinButton* _tmp18_;
+ gint _tmp19_;
+#line 325 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp10_ = self->priv->hour;
+#line 325 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp11_ = gtk_spin_button_get_value (_tmp10_);
+#line 325 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp11_ == 12.0) {
+#line 325 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp9_ = 0;
+#line 2200 "AdjustDateTimeDialog.c"
+ } else {
+ GtkSpinButton* _tmp12_;
+ gdouble _tmp13_;
+#line 325 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp12_ = self->priv->hour;
+#line 325 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp13_ = gtk_spin_button_get_value (_tmp12_);
+#line 325 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp9_ = (gint) _tmp13_;
+#line 2210 "AdjustDateTimeDialog.c"
+ }
+#line 325 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time = _tmp9_;
+#line 326 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp15_ = self->priv->previous_time_system;
+#line 326 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp15_ == ADJUST_DATE_TIME_DIALOG_TIME_SYSTEM_PM) {
+#line 326 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp14_ = 12;
+#line 2220 "AdjustDateTimeDialog.c"
+ } else {
+#line 326 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp14_ = 0;
+#line 2224 "AdjustDateTimeDialog.c"
+ }
+#line 326 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp16_ = time;
+#line 326 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ time = _tmp16_ + _tmp14_;
+#line 328 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp17_ = self->priv->hour;
+#line 328 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_spin_button_set_range (_tmp17_, (gdouble) 0, (gdouble) 23);
+#line 329 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_set_original_time_label (self, TRUE);
+#line 331 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp18_ = self->priv->hour;
+#line 331 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp19_ = time;
+#line 331 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_spin_button_set_value (_tmp18_, (gdouble) _tmp19_);
+#line 2242 "AdjustDateTimeDialog.c"
+ } else {
+ gint AMPM_hour = 0;
+ GtkSpinButton* _tmp20_;
+ gdouble _tmp21_;
+ GtkSpinButton* _tmp22_;
+ gint _tmp23_ = 0;
+ gint _tmp24_;
+ GtkSpinButton* _tmp26_;
+#line 333 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp20_ = self->priv->hour;
+#line 333 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp21_ = gtk_spin_button_get_value (_tmp20_);
+#line 333 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ AMPM_hour = ((gint) _tmp21_) % 12;
+#line 335 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp22_ = self->priv->hour;
+#line 335 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_spin_button_set_range (_tmp22_, (gdouble) 1, (gdouble) 12);
+#line 336 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_set_original_time_label (self, FALSE);
+#line 338 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp24_ = AMPM_hour;
+#line 338 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ if (_tmp24_ == 0) {
+#line 338 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp23_ = 12;
+#line 2269 "AdjustDateTimeDialog.c"
+ } else {
+ gint _tmp25_;
+#line 338 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp25_ = AMPM_hour;
+#line 338 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp23_ = _tmp25_;
+#line 2276 "AdjustDateTimeDialog.c"
+ }
+#line 338 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _tmp26_ = self->priv->hour;
+#line 338 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ gtk_spin_button_set_value (_tmp26_, (gdouble) _tmp23_);
+#line 2282 "AdjustDateTimeDialog.c"
+ }
+#line 341 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_on_time_changed (self);
+#line 2286 "AdjustDateTimeDialog.c"
+}
+
+
+static void adjust_date_time_dialog_class_init (AdjustDateTimeDialogClass * klass) {
+#line 8 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ adjust_date_time_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 8 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ g_type_class_add_private (klass, sizeof (AdjustDateTimeDialogPrivate));
+#line 8 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ G_OBJECT_CLASS (klass)->finalize = adjust_date_time_dialog_finalize;
+#line 2297 "AdjustDateTimeDialog.c"
+}
+
+
+static void adjust_date_time_dialog_instance_init (AdjustDateTimeDialog * self) {
+#line 8 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv = ADJUST_DATE_TIME_DIALOG_GET_PRIVATE (self);
+#line 13 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self->priv->no_original_time = FALSE;
+#line 2306 "AdjustDateTimeDialog.c"
+}
+
+
+static void adjust_date_time_dialog_finalize (GObject * obj) {
+ AdjustDateTimeDialog * self;
+#line 8 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ADJUST_DATE_TIME_DIALOG, AdjustDateTimeDialog);
+#line 18 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->original_time_label);
+#line 19 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->calendar);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->hour);
+#line 21 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->minute);
+#line 22 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->second);
+#line 23 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->system);
+#line 24 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->relativity_radio_button);
+#line 25 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->batch_radio_button);
+#line 26 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->modify_originals_check_button);
+#line 27 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ _g_object_unref0 (self->priv->notification);
+#line 8 "/home/jens/Source/shotwell/src/dialogs/AdjustDateTimeDialog.vala"
+ G_OBJECT_CLASS (adjust_date_time_dialog_parent_class)->finalize (obj);
+#line 2336 "AdjustDateTimeDialog.c"
+}
+
+
+GType adjust_date_time_dialog_get_type (void) {
+ static volatile gsize adjust_date_time_dialog_type_id__volatile = 0;
+ if (g_once_init_enter (&adjust_date_time_dialog_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (AdjustDateTimeDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) adjust_date_time_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AdjustDateTimeDialog), 0, (GInstanceInitFunc) adjust_date_time_dialog_instance_init, NULL };
+ GType adjust_date_time_dialog_type_id;
+ adjust_date_time_dialog_type_id = g_type_register_static (gtk_dialog_get_type (), "AdjustDateTimeDialog", &g_define_type_info, 0);
+ g_once_init_leave (&adjust_date_time_dialog_type_id__volatile, adjust_date_time_dialog_type_id);
+ }
+ return adjust_date_time_dialog_type_id__volatile;
+}
+
+
+
diff --git a/src/dialogs/AdjustDateTimeDialog.vala b/src/dialogs/AdjustDateTimeDialog.vala
new file mode 100644
index 0000000..cf2685b
--- /dev/null
+++ b/src/dialogs/AdjustDateTimeDialog.vala
@@ -0,0 +1,343 @@
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+public class AdjustDateTimeDialog : Gtk.Dialog {
+ private const int64 SECONDS_IN_DAY = 60 * 60 * 24;
+ private const int64 SECONDS_IN_HOUR = 60 * 60;
+ private const int64 SECONDS_IN_MINUTE = 60;
+ private const int YEAR_OFFSET = 1900;
+ private bool no_original_time = false;
+
+ private const int CALENDAR_THUMBNAIL_SCALE = 1;
+
+ time_t original_time;
+ Gtk.Label original_time_label;
+ Gtk.Calendar calendar;
+ Gtk.SpinButton hour;
+ Gtk.SpinButton minute;
+ Gtk.SpinButton second;
+ Gtk.ComboBoxText system;
+ Gtk.RadioButton relativity_radio_button;
+ Gtk.RadioButton batch_radio_button;
+ Gtk.CheckButton modify_originals_check_button;
+ Gtk.Label notification;
+
+ private enum TimeSystem {
+ AM,
+ PM,
+ 24HR;
+ }
+
+ TimeSystem previous_time_system;
+
+ public AdjustDateTimeDialog(Dateable source, int photo_count, bool display_options = true,
+ bool contains_video = false, bool only_video = false) {
+ assert(source != null);
+
+ Object(use_header_bar: Resources.use_header_bar());
+
+ set_modal(true);
+ set_resizable(false);
+ set_transient_for(AppWindow.get_instance());
+
+ add_buttons(Resources.CANCEL_LABEL, Gtk.ResponseType.CANCEL,
+ Resources.OK_LABEL, Gtk.ResponseType.OK);
+ set_title(Resources.ADJUST_DATE_TIME_LABEL);
+
+ calendar = new Gtk.Calendar();
+ calendar.show_heading = false;
+ calendar.day_selected.connect(on_time_changed);
+ calendar.month_changed.connect(on_time_changed);
+ calendar.next_year.connect(on_time_changed);
+ calendar.prev_year.connect(on_time_changed);
+
+ if (Config.Facade.get_instance().get_use_24_hour_time())
+ hour = new Gtk.SpinButton.with_range(0, 23, 1);
+ else
+ hour = new Gtk.SpinButton.with_range(1, 12, 1);
+
+ hour.output.connect(on_spin_button_output);
+ hour.set_width_chars(2);
+ hour.set_max_width_chars(2);
+
+ minute = new Gtk.SpinButton.with_range(0, 59, 1);
+ minute.set_width_chars(2);
+ minute.set_max_width_chars(2);
+ minute.output.connect(on_spin_button_output);
+
+ second = new Gtk.SpinButton.with_range(0, 59, 1);
+ second.set_width_chars(2);
+ second.set_max_width_chars(2);
+ second.output.connect(on_spin_button_output);
+
+ system = new Gtk.ComboBoxText();
+ system.append_text(_("AM"));
+ system.append_text(_("PM"));
+ system.append_text(_("24 Hr"));
+ system.changed.connect(on_time_system_changed);
+
+ Gtk.Box clock = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 3);
+
+ clock.pack_start(hour, false, false, 0);
+ clock.pack_start(new Gtk.Label(":"), false, false, 0); // internationalize?
+ clock.pack_start(minute, false, false, 0);
+ clock.pack_start(new Gtk.Label(":"), false, false, 0);
+ clock.pack_start(second, false, false, 0);
+ clock.pack_start(system, false, false, 0);
+
+ set_default_response(Gtk.ResponseType.OK);
+
+ relativity_radio_button = new Gtk.RadioButton.with_mnemonic(null,
+ _("_Shift photos/videos by the same amount"));
+ relativity_radio_button.set_active(Config.Facade.get_instance().get_keep_relativity());
+ relativity_radio_button.sensitive = display_options && photo_count > 1;
+
+ batch_radio_button = new Gtk.RadioButton.with_mnemonic(relativity_radio_button.get_group(),
+ _("Set _all photos/videos to this time"));
+ batch_radio_button.set_active(!Config.Facade.get_instance().get_keep_relativity());
+ batch_radio_button.sensitive = display_options && photo_count > 1;
+ batch_radio_button.toggled.connect(on_time_changed);
+
+ if (contains_video) {
+ var text = ngettext ("_Modify original photo file", "_Modify original photo files",
+ photo_count);
+ modify_originals_check_button = new Gtk.CheckButton.with_mnemonic(text);
+ } else {
+ var text = ngettext ("_Modify original file", "_Modify original files", photo_count);
+ modify_originals_check_button = new Gtk.CheckButton.with_mnemonic(text);
+ }
+
+ modify_originals_check_button.set_active(Config.Facade.get_instance().get_commit_metadata_to_masters() &&
+ display_options);
+ modify_originals_check_button.sensitive = (!only_video) &&
+ (!Config.Facade.get_instance().get_commit_metadata_to_masters() && display_options);
+
+ Gtk.Box time_content = new Gtk.Box(Gtk.Orientation.VERTICAL, 5);
+
+ var picker = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 5);
+ var combo = new Gtk.ComboBoxText();
+ for (int i = 0; i < 12; i++){
+ combo.append_text(Time.gm((i * 2764800)).format("%B"));
+ }
+ picker.pack_start(combo, false, false, 0);
+ // Limits taken from GtkCalendar
+ var spin = new Gtk.SpinButton.with_range(0, int.MAX >> 9, 1);
+ picker.pack_end(spin, false, false, 0);
+ spin.bind_property("value", calendar, "year", GLib.BindingFlags.BIDIRECTIONAL);
+ combo.bind_property("active", calendar, "month", GLib.BindingFlags.BIDIRECTIONAL);
+
+ time_content.pack_start(picker, false, false, 0);
+ time_content.pack_start(calendar, true, false, 0);
+ time_content.pack_start(clock, true, false, 0);
+
+ if (display_options) {
+ time_content.pack_start(relativity_radio_button, true, false, 0);
+ time_content.pack_start(batch_radio_button, true, false, 0);
+ time_content.pack_start(modify_originals_check_button, true, false, 0);
+ }
+
+ Gdk.Pixbuf preview = null;
+ try {
+ // Instead of calling get_pixbuf() here, we use the thumbnail instead;
+ // this was needed for Videos, since they don't support get_pixbuf().
+ preview = source.get_thumbnail(CALENDAR_THUMBNAIL_SCALE);
+ } catch (Error err) {
+ warning("Unable to fetch preview for %s", source.to_string());
+ }
+
+ Gtk.Box image_content = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
+ image_content.set_valign(Gtk.Align.START);
+ image_content.set_homogeneous(true);
+ Gtk.Image image = (preview != null) ? new Gtk.Image.from_pixbuf(preview) : new Gtk.Image();
+ original_time_label = new Gtk.Label(null);
+ image_content.pack_start(image, true, false, 0);
+ image_content.pack_start(original_time_label, true, false, 0);
+
+ Gtk.Box hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 10);
+ hbox.set_border_width(3);
+ hbox.pack_start(image_content, true, false, 0);
+ hbox.pack_start(time_content, true, false, 0);
+ hbox.halign = Gtk.Align.CENTER;
+ hbox.valign = Gtk.Align.CENTER;
+ hbox.hexpand = false;
+ hbox.vexpand = false;
+
+ ((Gtk.Box) get_content_area()).pack_start(hbox, true, false, 0);
+
+ notification = new Gtk.Label("");
+ notification.set_line_wrap(true);
+ notification.set_justify(Gtk.Justification.CENTER);
+
+ ((Gtk.Box) get_content_area()).pack_start(notification, true, true, 0);
+
+ original_time = source.get_exposure_time();
+
+ if (original_time == 0) {
+ original_time = time_t();
+ no_original_time = true;
+ }
+
+ set_time(Time.local(original_time));
+ set_original_time_label(Config.Facade.get_instance().get_use_24_hour_time());
+ }
+
+ private void set_time(Time time) {
+ calendar.select_month(time.month, time.year + YEAR_OFFSET);
+ calendar.select_day(time.day);
+ calendar.notify_property("year");
+ calendar.notify_property("month");
+
+ if (Config.Facade.get_instance().get_use_24_hour_time()) {
+ system.set_active(TimeSystem.24HR);
+ hour.set_value(time.hour);
+ } else {
+ int AMPM_hour = time.hour % 12;
+ hour.set_value((AMPM_hour == 0) ? 12 : AMPM_hour);
+ system.set_active((time.hour >= 12) ? TimeSystem.PM : TimeSystem.AM);
+ }
+
+ minute.set_value(time.minute);
+ second.set_value(time.second);
+
+ previous_time_system = (TimeSystem) system.get_active();
+ }
+
+ private void set_original_time_label(bool use_24_hr_format) {
+ if (no_original_time)
+ return;
+
+ original_time_label.set_text(_("Original: ") +
+ Time.local(original_time).format(use_24_hr_format ? _("%m/%d/%Y, %H:%M:%S") :
+ _("%m/%d/%Y, %I:%M:%S %p")));
+ }
+
+ private time_t get_time() {
+ Time time = Time();
+
+ time.second = (int) second.get_value();
+ time.minute = (int) minute.get_value();
+
+ // convert to 24 hr
+ int hour = (int) hour.get_value();
+ time.hour = (hour == 12 && system.get_active() != TimeSystem.24HR) ? 0 : hour;
+ time.hour += ((system.get_active() == TimeSystem.PM) ? 12 : 0);
+
+ uint year, month, day;
+ calendar.get_date(out year, out month, out day);
+ time.year = ((int) year) - YEAR_OFFSET;
+ time.month = (int) month;
+ time.day = (int) day;
+
+ time.isdst = -1;
+
+ return time.mktime();
+ }
+
+ public bool execute(out int64 time_shift, out bool keep_relativity,
+ out bool modify_originals) {
+ show_all();
+
+ bool response = false;
+
+ if (run() == Gtk.ResponseType.OK) {
+ if (no_original_time)
+ time_shift = (int64) get_time();
+ else
+ time_shift = (int64) (get_time() - original_time);
+
+ keep_relativity = relativity_radio_button.get_active();
+
+ if (relativity_radio_button.sensitive)
+ Config.Facade.get_instance().set_keep_relativity(keep_relativity);
+
+ modify_originals = modify_originals_check_button.get_active();
+
+ if (modify_originals_check_button.sensitive)
+ Config.Facade.get_instance().set_modify_originals(modify_originals);
+
+ response = true;
+ } else {
+ time_shift = 0;
+ keep_relativity = true;
+ modify_originals = false;
+ }
+
+ destroy();
+
+ return response;
+ }
+
+ private bool on_spin_button_output(Gtk.SpinButton button) {
+ button.set_text("%02d".printf((int) button.get_value()));
+
+ on_time_changed();
+
+ return true;
+ }
+
+ private void on_time_changed() {
+ int64 time_shift = ((int64) get_time() - (int64) original_time);
+ calendar.notify_property("year");
+ calendar.notify_property("month");
+
+ previous_time_system = (TimeSystem) system.get_active();
+
+ if (time_shift == 0 || no_original_time || (batch_radio_button.get_active() &&
+ batch_radio_button.sensitive)) {
+ notification.hide();
+ } else {
+ bool forward = time_shift > 0;
+ int days, hours, minutes, seconds;
+
+ time_shift = time_shift.abs();
+
+ days = (int) (time_shift / SECONDS_IN_DAY);
+ time_shift = time_shift % SECONDS_IN_DAY;
+ hours = (int) (time_shift / SECONDS_IN_HOUR);
+ time_shift = time_shift % SECONDS_IN_HOUR;
+ minutes = (int) (time_shift / SECONDS_IN_MINUTE);
+ seconds = (int) (time_shift % SECONDS_IN_MINUTE);
+
+ string shift_status = (forward) ?
+ _("Exposure time will be shifted forward by\n%d %s, %d %s, %d %s, and %d %s.") :
+ _("Exposure time will be shifted backward by\n%d %s, %d %s, %d %s, and %d %s.");
+
+ notification.set_text(shift_status.printf(days, ngettext("day", "days", days),
+ hours, ngettext("hour", "hours", hours), minutes,
+ ngettext("minute", "minutes", minutes), seconds,
+ ngettext("second", "seconds", seconds)));
+
+ notification.show();
+ }
+ }
+
+ private void on_time_system_changed() {
+ if (previous_time_system == system.get_active())
+ return;
+
+ Config.Facade.get_instance().set_use_24_hour_time(system.get_active() == TimeSystem.24HR);
+
+ if (system.get_active() == TimeSystem.24HR) {
+ int time = (hour.get_value() == 12.0) ? 0 : (int) hour.get_value();
+ time = time + ((previous_time_system == TimeSystem.PM) ? 12 : 0);
+
+ hour.set_range(0, 23);
+ set_original_time_label(true);
+
+ hour.set_value(time);
+ } else {
+ int AMPM_hour = ((int) hour.get_value()) % 12;
+
+ hour.set_range(1, 12);
+ set_original_time_label(false);
+
+ hour.set_value((AMPM_hour == 0) ? 12 : AMPM_hour);
+ }
+
+ on_time_changed();
+ }
+}
diff --git a/src/dialogs/EntryMultiCompletion.c b/src/dialogs/EntryMultiCompletion.c
new file mode 100644
index 0000000..9dd3cd1
--- /dev/null
+++ b/src/dialogs/EntryMultiCompletion.c
@@ -0,0 +1,1124 @@
+/* EntryMultiCompletion.c generated by valac 0.36.6, the Vala compiler
+ * generated from EntryMultiCompletion.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+/* Entry completion for values separated by separators (e.g. comma in the case of tags)*/
+/* Partly inspired by the class of the same name in gtkmm-utils by Marko Anastasov*/
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+
+
+#define TYPE_ENTRY_MULTI_COMPLETION (entry_multi_completion_get_type ())
+#define ENTRY_MULTI_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ENTRY_MULTI_COMPLETION, EntryMultiCompletion))
+#define ENTRY_MULTI_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ENTRY_MULTI_COMPLETION, EntryMultiCompletionClass))
+#define IS_ENTRY_MULTI_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ENTRY_MULTI_COMPLETION))
+#define IS_ENTRY_MULTI_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ENTRY_MULTI_COMPLETION))
+#define ENTRY_MULTI_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ENTRY_MULTI_COMPLETION, EntryMultiCompletionClass))
+
+typedef struct _EntryMultiCompletion EntryMultiCompletion;
+typedef struct _EntryMultiCompletionClass EntryMultiCompletionClass;
+typedef struct _EntryMultiCompletionPrivate EntryMultiCompletionPrivate;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#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 _EntryMultiCompletion {
+ GtkEntryCompletion parent_instance;
+ EntryMultiCompletionPrivate * priv;
+};
+
+struct _EntryMultiCompletionClass {
+ GtkEntryCompletionClass parent_class;
+};
+
+struct _EntryMultiCompletionPrivate {
+ gchar* delimiter;
+};
+
+
+static gpointer entry_multi_completion_parent_class = NULL;
+
+GType entry_multi_completion_get_type (void) G_GNUC_CONST;
+#define ENTRY_MULTI_COMPLETION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_ENTRY_MULTI_COMPLETION, EntryMultiCompletionPrivate))
+enum {
+ ENTRY_MULTI_COMPLETION_DUMMY_PROPERTY
+};
+EntryMultiCompletion* entry_multi_completion_new (GeeCollection* completion_list, const gchar* delimiter);
+EntryMultiCompletion* entry_multi_completion_construct (GType object_type, GeeCollection* completion_list, const gchar* delimiter);
+static GtkListStore* entry_multi_completion_create_completion_store (GeeCollection* completion_list);
+static gboolean entry_multi_completion_match_func (EntryMultiCompletion* self, GtkEntryCompletion* completion, const gchar* key, GtkTreeIter* iter);
+static gboolean _entry_multi_completion_match_func_gtk_entry_completion_match_func (GtkEntryCompletion* completion, const gchar* key, GtkTreeIter* iter, gpointer self);
+static gchar* entry_multi_completion_get_last_part (const gchar* s, const gchar* delimiter);
+static gboolean entry_multi_completion_real_match_selected (GtkEntryCompletion* base, GtkTreeModel* model, GtkTreeIter* iter);
+static void entry_multi_completion_finalize (GObject * obj);
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static gint _vala_array_length (gpointer array);
+
+
+static gboolean _entry_multi_completion_match_func_gtk_entry_completion_match_func (GtkEntryCompletion* completion, const gchar* key, GtkTreeIter* iter, gpointer self) {
+ gboolean result;
+ result = entry_multi_completion_match_func ((EntryMultiCompletion*) self, completion, key, iter);
+#line 19 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return result;
+#line 78 "EntryMultiCompletion.c"
+}
+
+
+EntryMultiCompletion* entry_multi_completion_construct (GType object_type, GeeCollection* completion_list, const gchar* delimiter) {
+ EntryMultiCompletion * self = NULL;
+ gboolean _tmp0_ = FALSE;
+ const gchar* _tmp1_;
+ const gchar* _tmp5_;
+ gchar* _tmp6_;
+ GeeCollection* _tmp7_;
+ GtkListStore* _tmp8_;
+ GtkListStore* _tmp9_;
+#line 13 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_return_val_if_fail (GEE_IS_COLLECTION (completion_list), NULL);
+#line 13 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ self = (EntryMultiCompletion*) g_object_new (object_type, NULL);
+#line 14 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp1_ = delimiter;
+#line 14 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (_tmp1_ == NULL) {
+#line 14 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp0_ = TRUE;
+#line 101 "EntryMultiCompletion.c"
+ } else {
+ const gchar* _tmp2_;
+ gint _tmp3_;
+ gint _tmp4_;
+#line 14 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp2_ = delimiter;
+#line 14 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp3_ = strlen (_tmp2_);
+#line 14 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp4_ = _tmp3_;
+#line 14 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp0_ = _tmp4_ == 1;
+#line 114 "EntryMultiCompletion.c"
+ }
+#line 14 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _vala_assert (_tmp0_, "delimiter == null || delimiter.length == 1");
+#line 15 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp5_ = delimiter;
+#line 15 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp6_ = g_strdup (_tmp5_);
+#line 15 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (self->priv->delimiter);
+#line 15 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ self->priv->delimiter = _tmp6_;
+#line 17 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp7_ = completion_list;
+#line 17 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp8_ = entry_multi_completion_create_completion_store (_tmp7_);
+#line 17 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp9_ = _tmp8_;
+#line 17 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ gtk_entry_completion_set_model (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_entry_completion_get_type (), GtkEntryCompletion), G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GTK_TYPE_TREE_MODEL, GtkTreeModel));
+#line 17 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_object_unref0 (_tmp9_);
+#line 18 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ gtk_entry_completion_set_text_column (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_entry_completion_get_type (), GtkEntryCompletion), 0);
+#line 19 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ gtk_entry_completion_set_match_func (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_entry_completion_get_type (), GtkEntryCompletion), _entry_multi_completion_match_func_gtk_entry_completion_match_func, g_object_ref (self), g_object_unref);
+#line 13 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return self;
+#line 142 "EntryMultiCompletion.c"
+}
+
+
+EntryMultiCompletion* entry_multi_completion_new (GeeCollection* completion_list, const gchar* delimiter) {
+#line 13 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return entry_multi_completion_construct (TYPE_ENTRY_MULTI_COMPLETION, completion_list, delimiter);
+#line 149 "EntryMultiCompletion.c"
+}
+
+
+static GtkListStore* entry_multi_completion_create_completion_store (GeeCollection* completion_list) {
+ GtkListStore* result = NULL;
+ GtkListStore* completion_store = NULL;
+ GtkListStore* _tmp0_;
+ GtkTreeIter store_iter = {0};
+ GeeIterator* completion_iter = NULL;
+ GeeCollection* _tmp1_;
+ GeeIterator* _tmp2_;
+#line 22 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_return_val_if_fail (GEE_IS_COLLECTION (completion_list), NULL);
+#line 23 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp0_ = gtk_list_store_new (1, G_TYPE_STRING, -1);
+#line 23 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ completion_store = _tmp0_;
+#line 25 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp1_ = completion_list;
+#line 25 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 25 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ completion_iter = _tmp2_;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ while (TRUE) {
+#line 175 "EntryMultiCompletion.c"
+ GeeIterator* _tmp3_;
+ gboolean _tmp4_;
+ GtkListStore* _tmp5_;
+ GtkTreeIter _tmp6_ = {0};
+ GtkListStore* _tmp7_;
+ GtkTreeIter _tmp8_;
+ GeeIterator* _tmp9_;
+ gpointer _tmp10_;
+ gchar* _tmp11_;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp3_ = completion_iter;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp4_ = gee_iterator_next (_tmp3_);
+#line 26 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (!_tmp4_) {
+#line 26 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ break;
+#line 193 "EntryMultiCompletion.c"
+ }
+#line 27 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp5_ = completion_store;
+#line 27 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ gtk_list_store_append (_tmp5_, &_tmp6_);
+#line 27 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ store_iter = _tmp6_;
+#line 28 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp7_ = completion_store;
+#line 28 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp8_ = store_iter;
+#line 28 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp9_ = completion_iter;
+#line 28 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp10_ = gee_iterator_get (_tmp9_);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp11_ = (gchar*) _tmp10_;
+#line 28 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ gtk_list_store_set (_tmp7_, &_tmp8_, 0, _tmp11_, -1, -1);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (_tmp11_);
+#line 215 "EntryMultiCompletion.c"
+ }
+#line 31 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ result = completion_store;
+#line 31 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_object_unref0 (completion_iter);
+#line 31 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return result;
+#line 223 "EntryMultiCompletion.c"
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+#line 35 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return self ? g_object_ref (self) : NULL;
+#line 230 "EntryMultiCompletion.c"
+}
+
+
+static gchar* string_strip (const gchar* self) {
+ gchar* result = NULL;
+ gchar* _result_ = NULL;
+ gchar* _tmp0_;
+ const gchar* _tmp1_;
+#line 1234 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (self != NULL, NULL);
+#line 1235 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp0_ = g_strdup (self);
+#line 1235 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _result_ = _tmp0_;
+#line 1236 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp1_ = _result_;
+#line 1236 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_strstrip (_tmp1_);
+#line 1237 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ result = _result_;
+#line 1237 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return result;
+#line 253 "EntryMultiCompletion.c"
+}
+
+
+static gboolean string_contains (const gchar* self, const gchar* needle) {
+ gboolean result = FALSE;
+ const gchar* _tmp0_;
+ gchar* _tmp1_;
+#line 1403 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (self != NULL, FALSE);
+#line 1403 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (needle != NULL, FALSE);
+#line 1404 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp0_ = needle;
+#line 1404 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp1_ = strstr ((gchar*) self, (gchar*) _tmp0_);
+#line 1404 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ result = _tmp1_ != NULL;
+#line 1404 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return result;
+#line 273 "EntryMultiCompletion.c"
+}
+
+
+static gint string_last_index_of_char (const gchar* self, gunichar c, gint start_index) {
+ gint result = 0;
+ gchar* _result_ = NULL;
+ gint _tmp0_;
+ gunichar _tmp1_;
+ gchar* _tmp2_;
+ gchar* _tmp3_;
+#line 1041 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (self != NULL, 0);
+#line 1042 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp0_ = start_index;
+#line 1042 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp1_ = c;
+#line 1042 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp2_ = g_utf8_strrchr (((gchar*) self) + _tmp0_, (gssize) -1, _tmp1_);
+#line 1042 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _result_ = _tmp2_;
+#line 1044 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp3_ = _result_;
+#line 1044 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ if (_tmp3_ != NULL) {
+#line 298 "EntryMultiCompletion.c"
+ gchar* _tmp4_;
+#line 1045 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp4_ = _result_;
+#line 1045 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ result = (gint) (_tmp4_ - ((gchar*) self));
+#line 1045 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return result;
+#line 306 "EntryMultiCompletion.c"
+ } else {
+#line 1047 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ result = -1;
+#line 1047 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return result;
+#line 312 "EntryMultiCompletion.c"
+ }
+}
+
+
+static gchar string_get (const gchar* self, glong index) {
+ gchar result = '\0';
+ glong _tmp0_;
+ gchar _tmp1_;
+#line 1110 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (self != NULL, '\0');
+#line 1111 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp0_ = index;
+#line 1111 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp1_ = ((gchar*) self)[_tmp0_];
+#line 1111 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ result = _tmp1_;
+#line 1111 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return result;
+#line 331 "EntryMultiCompletion.c"
+}
+
+
+static gboolean entry_multi_completion_match_func (EntryMultiCompletion* self, GtkEntryCompletion* completion, const gchar* key, GtkTreeIter* iter) {
+ gboolean result = FALSE;
+ GtkTreeModel* model = NULL;
+ GtkEntryCompletion* _tmp0_;
+ GtkTreeModel* _tmp1_;
+ GtkTreeModel* _tmp2_;
+ gchar* possible_match = NULL;
+ GtkTreeModel* _tmp3_;
+ GtkTreeIter _tmp4_;
+ const gchar* _tmp5_;
+ gchar* _tmp6_;
+ gchar* _tmp7_;
+ gchar* _tmp8_;
+ gchar* normed_key = NULL;
+ const gchar* _tmp9_;
+ gchar* _tmp10_;
+ const gchar* _tmp11_;
+#line 34 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_return_val_if_fail (IS_ENTRY_MULTI_COMPLETION (self), FALSE);
+#line 34 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_return_val_if_fail (GTK_IS_ENTRY_COMPLETION (completion), FALSE);
+#line 34 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_return_val_if_fail (key != NULL, FALSE);
+#line 34 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_return_val_if_fail (iter != NULL, FALSE);
+#line 35 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp0_ = completion;
+#line 35 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp1_ = gtk_entry_completion_get_model (_tmp0_);
+#line 35 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp2_ = _g_object_ref0 (_tmp1_);
+#line 35 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ model = _tmp2_;
+#line 37 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp3_ = model;
+#line 37 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp4_ = *iter;
+#line 37 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ gtk_tree_model_get (_tmp3_, &_tmp4_, 0, &possible_match, -1);
+#line 43 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp5_ = possible_match;
+#line 43 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp6_ = g_utf8_casefold (_tmp5_, (gssize) -1);
+#line 43 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp7_ = _tmp6_;
+#line 43 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp8_ = g_utf8_normalize (_tmp7_, (gssize) -1, G_NORMALIZE_ALL_COMPOSE);
+#line 43 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (possible_match);
+#line 43 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ possible_match = _tmp8_;
+#line 43 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (_tmp7_);
+#line 44 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp9_ = key;
+#line 44 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp10_ = g_utf8_normalize (_tmp9_, (gssize) -1, G_NORMALIZE_ALL_COMPOSE);
+#line 44 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ normed_key = _tmp10_;
+#line 46 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp11_ = self->priv->delimiter;
+#line 46 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (_tmp11_ == NULL) {
+#line 398 "EntryMultiCompletion.c"
+ const gchar* _tmp12_;
+ const gchar* _tmp13_;
+ gchar* _tmp14_;
+ gchar* _tmp15_;
+ gboolean _tmp16_;
+ gboolean _tmp17_;
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp12_ = possible_match;
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp13_ = normed_key;
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp14_ = string_strip (_tmp13_);
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp15_ = _tmp14_;
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp16_ = g_str_has_prefix (_tmp12_, _tmp15_);
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp17_ = _tmp16_;
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (_tmp15_);
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ result = _tmp17_;
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (normed_key);
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (possible_match);
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_object_unref0 (model);
+#line 47 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return result;
+#line 429 "EntryMultiCompletion.c"
+ } else {
+ const gchar* _tmp18_;
+ const gchar* _tmp19_;
+ gboolean _tmp20_;
+ gchar* last_part = NULL;
+ const gchar* _tmp31_;
+ gchar* _tmp32_;
+ gchar* _tmp33_;
+ const gchar* _tmp34_;
+ gchar* _tmp35_;
+ gchar* _tmp36_;
+ const gchar* _tmp37_;
+ gint _tmp38_;
+ gint _tmp39_;
+ const gchar* _tmp40_;
+ const gchar* _tmp41_;
+ gchar* _tmp42_;
+ gchar* _tmp43_;
+ gboolean _tmp44_;
+ gboolean _tmp45_;
+#line 49 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp18_ = normed_key;
+#line 49 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp19_ = self->priv->delimiter;
+#line 49 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp20_ = string_contains (_tmp18_, _tmp19_);
+#line 49 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (_tmp20_) {
+#line 458 "EntryMultiCompletion.c"
+ gint offset = 0;
+ const gchar* _tmp21_;
+ const gchar* _tmp22_;
+ const gchar* _tmp23_;
+ gchar _tmp24_;
+ gint _tmp25_;
+ gint _tmp26_;
+ gint position = 0;
+ GtkWidget* _tmp27_;
+ gint _tmp28_;
+ gint _tmp29_;
+ gint _tmp30_;
+#line 51 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp21_ = normed_key;
+#line 51 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp22_ = normed_key;
+#line 51 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp23_ = self->priv->delimiter;
+#line 51 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp24_ = string_get (_tmp23_, (glong) 0);
+#line 51 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp25_ = string_last_index_of_char (_tmp22_, (gunichar) _tmp24_, 0);
+#line 51 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp26_ = g_utf8_strlen (_tmp21_, (gssize) _tmp25_);
+#line 51 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ offset = _tmp26_;
+#line 52 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp27_ = gtk_entry_completion_get_entry (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_entry_completion_get_type (), GtkEntryCompletion));
+#line 52 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp28_ = gtk_editable_get_position (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, gtk_entry_get_type (), GtkEntry), GTK_TYPE_EDITABLE, GtkEditable));
+#line 52 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ position = _tmp28_;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp29_ = position;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp30_ = offset;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (_tmp29_ <= _tmp30_) {
+#line 54 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ result = FALSE;
+#line 54 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (normed_key);
+#line 54 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (possible_match);
+#line 54 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_object_unref0 (model);
+#line 54 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return result;
+#line 507 "EntryMultiCompletion.c"
+ }
+ }
+#line 57 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp31_ = normed_key;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp32_ = string_strip (_tmp31_);
+#line 57 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp33_ = _tmp32_;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp34_ = self->priv->delimiter;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp35_ = entry_multi_completion_get_last_part (_tmp33_, _tmp34_);
+#line 57 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp36_ = _tmp35_;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (_tmp33_);
+#line 57 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ last_part = _tmp36_;
+#line 59 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp37_ = last_part;
+#line 59 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp38_ = strlen (_tmp37_);
+#line 59 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp39_ = _tmp38_;
+#line 59 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (_tmp39_ == 0) {
+#line 60 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ result = FALSE;
+#line 60 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (last_part);
+#line 60 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (normed_key);
+#line 60 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (possible_match);
+#line 60 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_object_unref0 (model);
+#line 60 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return result;
+#line 546 "EntryMultiCompletion.c"
+ }
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp40_ = possible_match;
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp41_ = last_part;
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp42_ = string_strip (_tmp41_);
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp43_ = _tmp42_;
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp44_ = g_str_has_prefix (_tmp40_, _tmp43_);
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp45_ = _tmp44_;
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (_tmp43_);
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ result = _tmp45_;
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (last_part);
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (normed_key);
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (possible_match);
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_object_unref0 (model);
+#line 62 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return result;
+#line 574 "EntryMultiCompletion.c"
+ }
+#line 34 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (normed_key);
+#line 34 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (possible_match);
+#line 34 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_object_unref0 (model);
+#line 582 "EntryMultiCompletion.c"
+}
+
+
+static glong string_strnlen (gchar* str, glong maxlen) {
+ glong result = 0L;
+ gchar* end = NULL;
+ gchar* _tmp0_;
+ glong _tmp1_;
+ gchar* _tmp2_;
+ gchar* _tmp3_;
+#line 1322 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp0_ = str;
+#line 1322 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp1_ = maxlen;
+#line 1322 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_);
+#line 1322 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ end = _tmp2_;
+#line 1323 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp3_ = end;
+#line 1323 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ if (_tmp3_ == NULL) {
+#line 605 "EntryMultiCompletion.c"
+ glong _tmp4_;
+#line 1324 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp4_ = maxlen;
+#line 1324 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ result = _tmp4_;
+#line 1324 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return result;
+#line 613 "EntryMultiCompletion.c"
+ } else {
+ gchar* _tmp5_;
+ gchar* _tmp6_;
+#line 1326 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp5_ = end;
+#line 1326 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp6_ = str;
+#line 1326 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ result = (glong) (_tmp5_ - _tmp6_);
+#line 1326 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return result;
+#line 625 "EntryMultiCompletion.c"
+ }
+}
+
+
+static gchar* string_substring (const gchar* self, glong offset, glong len) {
+ gchar* result = NULL;
+ glong string_length = 0L;
+ gboolean _tmp0_ = FALSE;
+ glong _tmp1_;
+ glong _tmp8_;
+ glong _tmp14_;
+ glong _tmp17_;
+ glong _tmp18_;
+ glong _tmp19_;
+ glong _tmp20_;
+ glong _tmp21_;
+ gchar* _tmp22_;
+#line 1333 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (self != NULL, NULL);
+#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp1_ = offset;
+#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ if (_tmp1_ >= ((glong) 0)) {
+#line 649 "EntryMultiCompletion.c"
+ glong _tmp2_;
+#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp2_ = len;
+#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp0_ = _tmp2_ >= ((glong) 0);
+#line 655 "EntryMultiCompletion.c"
+ } else {
+#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp0_ = FALSE;
+#line 659 "EntryMultiCompletion.c"
+ }
+#line 1335 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ if (_tmp0_) {
+#line 663 "EntryMultiCompletion.c"
+ glong _tmp3_;
+ glong _tmp4_;
+ glong _tmp5_;
+#line 1337 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp3_ = offset;
+#line 1337 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp4_ = len;
+#line 1337 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp5_ = string_strnlen ((gchar*) self, _tmp3_ + _tmp4_);
+#line 1337 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ string_length = _tmp5_;
+#line 675 "EntryMultiCompletion.c"
+ } else {
+ gint _tmp6_;
+ gint _tmp7_;
+#line 1339 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp6_ = strlen (self);
+#line 1339 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp7_ = _tmp6_;
+#line 1339 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ string_length = (glong) _tmp7_;
+#line 685 "EntryMultiCompletion.c"
+ }
+#line 1342 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp8_ = offset;
+#line 1342 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ if (_tmp8_ < ((glong) 0)) {
+#line 691 "EntryMultiCompletion.c"
+ glong _tmp9_;
+ glong _tmp10_;
+ glong _tmp11_;
+#line 1343 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp9_ = string_length;
+#line 1343 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp10_ = offset;
+#line 1343 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ offset = _tmp9_ + _tmp10_;
+#line 1344 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp11_ = offset;
+#line 1344 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (_tmp11_ >= ((glong) 0), NULL);
+#line 705 "EntryMultiCompletion.c"
+ } else {
+ glong _tmp12_;
+ glong _tmp13_;
+#line 1346 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp12_ = offset;
+#line 1346 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp13_ = string_length;
+#line 1346 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (_tmp12_ <= _tmp13_, NULL);
+#line 715 "EntryMultiCompletion.c"
+ }
+#line 1348 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp14_ = len;
+#line 1348 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ if (_tmp14_ < ((glong) 0)) {
+#line 721 "EntryMultiCompletion.c"
+ glong _tmp15_;
+ glong _tmp16_;
+#line 1349 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp15_ = string_length;
+#line 1349 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp16_ = offset;
+#line 1349 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ len = _tmp15_ - _tmp16_;
+#line 730 "EntryMultiCompletion.c"
+ }
+#line 1351 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp17_ = offset;
+#line 1351 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp18_ = len;
+#line 1351 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp19_ = string_length;
+#line 1351 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail ((_tmp17_ + _tmp18_) <= _tmp19_, NULL);
+#line 1352 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp20_ = offset;
+#line 1352 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp21_ = len;
+#line 1352 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp22_ = g_strndup (((gchar*) self) + _tmp20_, (gsize) _tmp21_);
+#line 1352 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ result = _tmp22_;
+#line 1352 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return result;
+#line 750 "EntryMultiCompletion.c"
+}
+
+
+static gboolean entry_multi_completion_real_match_selected (GtkEntryCompletion* base, GtkTreeModel* model, GtkTreeIter* iter) {
+ EntryMultiCompletion * self;
+ gboolean result = FALSE;
+ gchar* match = NULL;
+ GtkTreeModel* _tmp0_;
+ GtkTreeIter _tmp1_;
+ GtkEntry* entry = NULL;
+ GtkWidget* _tmp2_;
+ GtkEntry* _tmp3_;
+ gchar* old_text = NULL;
+ GtkEntry* _tmp4_;
+ const gchar* _tmp5_;
+ gchar* _tmp6_;
+ const gchar* _tmp7_;
+ gint _tmp8_;
+ gint _tmp9_;
+ const gchar* _tmp24_ = NULL;
+ const gchar* _tmp25_;
+ gchar* new_text = NULL;
+ const gchar* _tmp26_;
+ const gchar* _tmp27_;
+ gchar* _tmp28_;
+ gchar* _tmp29_;
+ const gchar* _tmp30_;
+ gchar* _tmp31_;
+ gchar* _tmp32_;
+ gchar* _tmp33_;
+ gchar* _tmp34_;
+ GtkEntry* _tmp35_;
+ GtkEntry* _tmp36_;
+ gint _tmp37_;
+ gint _tmp38_;
+#line 66 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_ENTRY_MULTI_COMPLETION, EntryMultiCompletion);
+#line 66 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_return_val_if_fail (GTK_IS_TREE_MODEL (model), FALSE);
+#line 66 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_return_val_if_fail (iter != NULL, FALSE);
+#line 68 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp0_ = model;
+#line 68 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp1_ = *iter;
+#line 68 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ gtk_tree_model_get (_tmp0_, &_tmp1_, 0, &match, -1);
+#line 70 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp2_ = gtk_entry_completion_get_entry (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_entry_completion_get_type (), GtkEntryCompletion));
+#line 70 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp3_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_entry_get_type (), GtkEntry));
+#line 70 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ entry = _tmp3_;
+#line 72 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp4_ = entry;
+#line 72 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp5_ = gtk_entry_get_text (_tmp4_);
+#line 72 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp6_ = g_utf8_normalize (_tmp5_, (gssize) -1, G_NORMALIZE_ALL_COMPOSE);
+#line 72 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ old_text = _tmp6_;
+#line 73 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp7_ = old_text;
+#line 73 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp8_ = strlen (_tmp7_);
+#line 73 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp9_ = _tmp8_;
+#line 73 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (_tmp9_ > 0) {
+#line 820 "EntryMultiCompletion.c"
+ const gchar* _tmp10_;
+ const gchar* _tmp11_;
+ gboolean _tmp12_;
+#line 74 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp10_ = old_text;
+#line 74 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp11_ = self->priv->delimiter;
+#line 74 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp12_ = string_contains (_tmp10_, _tmp11_);
+#line 74 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (_tmp12_) {
+#line 832 "EntryMultiCompletion.c"
+ const gchar* _tmp13_ = NULL;
+ const gchar* _tmp14_;
+ const gchar* _tmp15_;
+ const gchar* _tmp16_;
+ const gchar* _tmp17_;
+ gchar _tmp18_;
+ gint _tmp19_;
+ gchar* _tmp20_;
+ gchar* _tmp21_;
+ gchar* _tmp22_;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp14_ = self->priv->delimiter;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (g_strcmp0 (_tmp14_, " ") != 0) {
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp13_ = " ";
+#line 849 "EntryMultiCompletion.c"
+ } else {
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp13_ = "";
+#line 853 "EntryMultiCompletion.c"
+ }
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp15_ = old_text;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp16_ = old_text;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp17_ = self->priv->delimiter;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp18_ = string_get (_tmp17_, (glong) 0);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp19_ = string_last_index_of_char (_tmp16_, (gunichar) _tmp18_, 0);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp20_ = string_substring (_tmp15_, (glong) 0, (glong) (_tmp19_ + 1));
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp21_ = _tmp20_;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp22_ = g_strconcat (_tmp21_, _tmp13_, NULL);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (old_text);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ old_text = _tmp22_;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (_tmp21_);
+#line 877 "EntryMultiCompletion.c"
+ } else {
+ gchar* _tmp23_;
+#line 77 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp23_ = g_strdup ("");
+#line 77 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (old_text);
+#line 77 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ old_text = _tmp23_;
+#line 886 "EntryMultiCompletion.c"
+ }
+ }
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp25_ = self->priv->delimiter;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (g_strcmp0 (_tmp25_, " ") != 0) {
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp24_ = " ";
+#line 895 "EntryMultiCompletion.c"
+ } else {
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp24_ = "";
+#line 899 "EntryMultiCompletion.c"
+ }
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp26_ = old_text;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp27_ = match;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp28_ = g_strconcat (_tmp26_, _tmp27_, NULL);
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp29_ = _tmp28_;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp30_ = self->priv->delimiter;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp31_ = g_strconcat (_tmp29_, _tmp30_, NULL);
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp32_ = _tmp31_;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp33_ = g_strconcat (_tmp32_, _tmp24_, NULL);
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp34_ = _tmp33_;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (_tmp32_);
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (_tmp29_);
+#line 80 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ new_text = _tmp34_;
+#line 81 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp35_ = entry;
+#line 81 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ gtk_entry_set_text (_tmp35_, new_text);
+#line 82 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp36_ = entry;
+#line 82 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp37_ = strlen (new_text);
+#line 82 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp38_ = _tmp37_;
+#line 82 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ gtk_editable_set_position (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, GTK_TYPE_EDITABLE, GtkEditable), (gint) _tmp38_);
+#line 84 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ result = TRUE;
+#line 84 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (new_text);
+#line 84 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (old_text);
+#line 84 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_object_unref0 (entry);
+#line 84 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (match);
+#line 84 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return result;
+#line 949 "EntryMultiCompletion.c"
+}
+
+
+static gchar* entry_multi_completion_get_last_part (const gchar* s, const gchar* delimiter) {
+ gchar* result = NULL;
+ gchar** split = NULL;
+ const gchar* _tmp0_;
+ const gchar* _tmp1_;
+ gchar** _tmp2_;
+ gchar** _tmp3_;
+ gint split_length1;
+ gint _split_size_;
+ gboolean _tmp4_ = FALSE;
+ gchar** _tmp5_;
+ gint _tmp5__length1;
+#line 88 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_return_val_if_fail (s != NULL, NULL);
+#line 88 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_return_val_if_fail (delimiter != NULL, NULL);
+#line 89 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp0_ = s;
+#line 89 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp1_ = delimiter;
+#line 89 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp3_ = _tmp2_ = g_strsplit (_tmp0_, _tmp1_, 0);
+#line 89 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ split = _tmp3_;
+#line 89 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ split_length1 = _vala_array_length (_tmp2_);
+#line 89 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _split_size_ = split_length1;
+#line 91 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp5_ = split;
+#line 91 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp5__length1 = split_length1;
+#line 91 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (_tmp5_ != NULL) {
+#line 987 "EntryMultiCompletion.c"
+ gchar** _tmp6_;
+ gint _tmp6__length1;
+ const gchar* _tmp7_;
+#line 91 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp6_ = split;
+#line 91 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp6__length1 = split_length1;
+#line 91 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp7_ = _tmp6_[0];
+#line 91 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp4_ = _tmp7_ != NULL;
+#line 999 "EntryMultiCompletion.c"
+ } else {
+#line 91 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp4_ = FALSE;
+#line 1003 "EntryMultiCompletion.c"
+ }
+#line 91 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ if (_tmp4_) {
+#line 1007 "EntryMultiCompletion.c"
+ gchar** _tmp8_;
+ gint _tmp8__length1;
+ gchar** _tmp9_;
+ gint _tmp9__length1;
+ const gchar* _tmp10_;
+ gchar* _tmp11_;
+#line 92 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp8_ = split;
+#line 92 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp8__length1 = split_length1;
+#line 92 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp9_ = split;
+#line 92 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp9__length1 = split_length1;
+#line 92 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp10_ = _tmp8_[_tmp9__length1 - 1];
+#line 92 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp11_ = g_strdup (_tmp10_);
+#line 92 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ result = _tmp11_;
+#line 92 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ split = (_vala_array_free (split, split_length1, (GDestroyNotify) g_free), NULL);
+#line 92 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return result;
+#line 1032 "EntryMultiCompletion.c"
+ } else {
+ gchar* _tmp12_;
+#line 94 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _tmp12_ = g_strdup ("");
+#line 94 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ result = _tmp12_;
+#line 94 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ split = (_vala_array_free (split, split_length1, (GDestroyNotify) g_free), NULL);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ return result;
+#line 1043 "EntryMultiCompletion.c"
+ }
+#line 88 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ split = (_vala_array_free (split, split_length1, (GDestroyNotify) g_free), NULL);
+#line 1047 "EntryMultiCompletion.c"
+}
+
+
+static void entry_multi_completion_class_init (EntryMultiCompletionClass * klass) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ entry_multi_completion_parent_class = g_type_class_peek_parent (klass);
+#line 10 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ g_type_class_add_private (klass, sizeof (EntryMultiCompletionPrivate));
+#line 10 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ ((GtkEntryCompletionClass *) klass)->match_selected = (gboolean (*) (GtkEntryCompletion *, GtkTreeModel*, GtkTreeIter*)) entry_multi_completion_real_match_selected;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ G_OBJECT_CLASS (klass)->finalize = entry_multi_completion_finalize;
+#line 1060 "EntryMultiCompletion.c"
+}
+
+
+static void entry_multi_completion_instance_init (EntryMultiCompletion * self) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ self->priv = ENTRY_MULTI_COMPLETION_GET_PRIVATE (self);
+#line 1067 "EntryMultiCompletion.c"
+}
+
+
+static void entry_multi_completion_finalize (GObject * obj) {
+ EntryMultiCompletion * self;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_ENTRY_MULTI_COMPLETION, EntryMultiCompletion);
+#line 11 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ _g_free0 (self->priv->delimiter);
+#line 10 "/home/jens/Source/shotwell/src/dialogs/EntryMultiCompletion.vala"
+ G_OBJECT_CLASS (entry_multi_completion_parent_class)->finalize (obj);
+#line 1079 "EntryMultiCompletion.c"
+}
+
+
+GType entry_multi_completion_get_type (void) {
+ static volatile gsize entry_multi_completion_type_id__volatile = 0;
+ if (g_once_init_enter (&entry_multi_completion_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (EntryMultiCompletionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) entry_multi_completion_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EntryMultiCompletion), 0, (GInstanceInitFunc) entry_multi_completion_instance_init, NULL };
+ GType entry_multi_completion_type_id;
+ entry_multi_completion_type_id = g_type_register_static (gtk_entry_completion_get_type (), "EntryMultiCompletion", &g_define_type_info, 0);
+ g_once_init_leave (&entry_multi_completion_type_id__volatile, entry_multi_completion_type_id);
+ }
+ return entry_multi_completion_type_id__volatile;
+}
+
+
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+ if ((array != NULL) && (destroy_func != NULL)) {
+ int i;
+ for (i = 0; i < array_length; i = i + 1) {
+ if (((gpointer*) array)[i] != NULL) {
+ destroy_func (((gpointer*) array)[i]);
+ }
+ }
+ }
+}
+
+
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+ _vala_array_destroy (array, array_length, destroy_func);
+ g_free (array);
+}
+
+
+static gint _vala_array_length (gpointer array) {
+ int length;
+ length = 0;
+ if (array) {
+ while (((gpointer*) array)[length]) {
+ length++;
+ }
+ }
+ return length;
+}
+
+
+
diff --git a/src/dialogs/EntryMultiCompletion.vala b/src/dialogs/EntryMultiCompletion.vala
new file mode 100644
index 0000000..8700f21
--- /dev/null
+++ b/src/dialogs/EntryMultiCompletion.vala
@@ -0,0 +1,97 @@
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+// Entry completion for values separated by separators (e.g. comma in the case of tags)
+// Partly inspired by the class of the same name in gtkmm-utils by Marko Anastasov
+public class EntryMultiCompletion : Gtk.EntryCompletion {
+ private string delimiter;
+
+ public EntryMultiCompletion(Gee.Collection<string> completion_list, string? delimiter) {
+ assert(delimiter == null || delimiter.length == 1);
+ this.delimiter = delimiter;
+
+ set_model(create_completion_store(completion_list));
+ set_text_column(0);
+ set_match_func(match_func);
+ }
+
+ private static Gtk.ListStore create_completion_store(Gee.Collection<string> completion_list) {
+ Gtk.ListStore completion_store = new Gtk.ListStore(1, typeof(string));
+ Gtk.TreeIter store_iter;
+ Gee.Iterator<string> completion_iter = completion_list.iterator();
+ while (completion_iter.next()) {
+ completion_store.append(out store_iter);
+ completion_store.set(store_iter, 0, completion_iter.get(), -1);
+ }
+
+ return completion_store;
+ }
+
+ private bool match_func(Gtk.EntryCompletion completion, string key, Gtk.TreeIter iter) {
+ Gtk.TreeModel model = completion.get_model();
+ string possible_match;
+ model.get(iter, 0, out possible_match);
+
+ // Normalize key and possible matches to allow comparison of non-ASCII characters.
+ // Use a "COMPOSE" normalization to allow comparison to the position value returned by
+ // Gtk.Entry, i.e. one character=one position. Using the default normalization a character
+ // like "é" or "ö" would have a length of two.
+ possible_match = possible_match.casefold().normalize(-1, NormalizeMode.ALL_COMPOSE);
+ string normed_key = key.normalize(-1, NormalizeMode.ALL_COMPOSE);
+
+ if (delimiter == null) {
+ return possible_match.has_prefix(normed_key.strip());
+ } else {
+ if (normed_key.contains(delimiter)) {
+ // check whether cursor is before last delimiter
+ int offset = normed_key.char_count(normed_key.last_index_of_char(delimiter[0]));
+ int position = ((Gtk.Entry) get_entry()).get_position();
+ if (position <= offset)
+ return false; // TODO: Autocompletion for tags not last in list
+ }
+
+ string last_part = get_last_part(normed_key.strip(), delimiter);
+
+ if (last_part.length == 0)
+ return false; // need at least one character to show matches
+
+ return possible_match.has_prefix(last_part.strip());
+ }
+ }
+
+ public override bool match_selected(Gtk.TreeModel model, Gtk.TreeIter iter) {
+ string match;
+ model.get(iter, 0, out match);
+
+ Gtk.Entry entry = (Gtk.Entry)get_entry();
+
+ string old_text = entry.get_text().normalize(-1, NormalizeMode.ALL_COMPOSE);
+ if (old_text.length > 0) {
+ if (old_text.contains(delimiter)) {
+ old_text = old_text.substring(0, old_text.last_index_of_char(delimiter[0]) + 1) + (delimiter != " " ? " " : "");
+ } else
+ old_text = "";
+ }
+
+ string new_text = old_text + match + delimiter + (delimiter != " " ? " " : "");
+ entry.set_text(new_text);
+ entry.set_position((int) new_text.length);
+
+ return true;
+ }
+
+ // Find last string after any delimiter
+ private static string get_last_part(string s, string delimiter) {
+ string[] split = s.split(delimiter);
+
+ if((split != null) && (split[0] != null)) {
+ return split[split.length - 1];
+ } else {
+ return "";
+ }
+ }
+}
diff --git a/src/dialogs/ExportDialog.c b/src/dialogs/ExportDialog.c
new file mode 100644
index 0000000..f74f962
--- /dev/null
+++ b/src/dialogs/ExportDialog.c
@@ -0,0 +1,2107 @@
+/* ExportDialog.c generated by valac 0.36.6, the Vala compiler
+ * generated from ExportDialog.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <gee.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib/gi18n-lib.h>
+
+
+#define TYPE_EXPORT_DIALOG (export_dialog_get_type ())
+#define EXPORT_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EXPORT_DIALOG, ExportDialog))
+#define EXPORT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EXPORT_DIALOG, ExportDialogClass))
+#define IS_EXPORT_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EXPORT_DIALOG))
+#define IS_EXPORT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EXPORT_DIALOG))
+#define EXPORT_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EXPORT_DIALOG, ExportDialogClass))
+
+typedef struct _ExportDialog ExportDialog;
+typedef struct _ExportDialogClass ExportDialogClass;
+typedef struct _ExportDialogPrivate ExportDialogPrivate;
+
+#define TYPE_SCALE_CONSTRAINT (scale_constraint_get_type ())
+
+#define TYPE_EXPORT_FORMAT_PARAMETERS (export_format_parameters_get_type ())
+
+#define TYPE_EXPORT_FORMAT_MODE (export_format_mode_get_type ())
+
+#define TYPE_PHOTO_FILE_FORMAT (photo_file_format_get_type ())
+
+#define JPEG_TYPE_QUALITY (jpeg_quality_get_type ())
+typedef struct _ExportFormatParameters ExportFormatParameters;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+
+#define TYPE_CONFIGURATION_FACADE (configuration_facade_get_type ())
+#define CONFIGURATION_FACADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CONFIGURATION_FACADE, ConfigurationFacade))
+#define CONFIGURATION_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CONFIGURATION_FACADE, ConfigurationFacadeClass))
+#define IS_CONFIGURATION_FACADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CONFIGURATION_FACADE))
+#define IS_CONFIGURATION_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CONFIGURATION_FACADE))
+#define CONFIGURATION_FACADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CONFIGURATION_FACADE, ConfigurationFacadeClass))
+
+typedef struct _ConfigurationFacade ConfigurationFacade;
+typedef struct _ConfigurationFacadeClass ConfigurationFacadeClass;
+
+#define CONFIG_TYPE_FACADE (config_facade_get_type ())
+#define CONFIG_FACADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONFIG_TYPE_FACADE, ConfigFacade))
+#define CONFIG_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONFIG_TYPE_FACADE, ConfigFacadeClass))
+#define CONFIG_IS_FACADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONFIG_TYPE_FACADE))
+#define CONFIG_IS_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONFIG_TYPE_FACADE))
+#define CONFIG_FACADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONFIG_TYPE_FACADE, ConfigFacadeClass))
+
+typedef struct _ConfigFacade ConfigFacade;
+typedef struct _ConfigFacadeClass ConfigFacadeClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+#define TYPE_PHOTO_FILE_FORMAT_PROPERTIES (photo_file_format_properties_get_type ())
+#define PHOTO_FILE_FORMAT_PROPERTIES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHOTO_FILE_FORMAT_PROPERTIES, PhotoFileFormatProperties))
+#define PHOTO_FILE_FORMAT_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHOTO_FILE_FORMAT_PROPERTIES, PhotoFileFormatPropertiesClass))
+#define IS_PHOTO_FILE_FORMAT_PROPERTIES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHOTO_FILE_FORMAT_PROPERTIES))
+#define IS_PHOTO_FILE_FORMAT_PROPERTIES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHOTO_FILE_FORMAT_PROPERTIES))
+#define PHOTO_FILE_FORMAT_PROPERTIES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHOTO_FILE_FORMAT_PROPERTIES, PhotoFileFormatPropertiesClass))
+
+typedef struct _PhotoFileFormatProperties PhotoFileFormatProperties;
+typedef struct _PhotoFileFormatPropertiesClass PhotoFileFormatPropertiesClass;
+#define _photo_file_format_properties_unref0(var) ((var == NULL) ? NULL : (var = (photo_file_format_properties_unref (var), NULL)))
+#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 _ExportDialog {
+ GtkDialog parent_instance;
+ ExportDialogPrivate * priv;
+};
+
+struct _ExportDialogClass {
+ GtkDialogClass parent_class;
+};
+
+struct _ExportDialogPrivate {
+ GtkGrid* table;
+ GtkComboBoxText* quality_combo;
+ GtkComboBoxText* constraint_combo;
+ GtkComboBoxText* format_combo;
+ GtkSwitch* export_metadata;
+ GeeArrayList* format_options;
+ GtkEntry* pixels_entry;
+ GtkWidget* ok_button;
+ gboolean in_insert;
+};
+
+typedef enum {
+ SCALE_CONSTRAINT_ORIGINAL,
+ SCALE_CONSTRAINT_DIMENSIONS,
+ SCALE_CONSTRAINT_WIDTH,
+ SCALE_CONSTRAINT_HEIGHT,
+ SCALE_CONSTRAINT_FILL_VIEWPORT
+} ScaleConstraint;
+
+typedef enum {
+ EXPORT_FORMAT_MODE_UNMODIFIED,
+ EXPORT_FORMAT_MODE_CURRENT,
+ EXPORT_FORMAT_MODE_SPECIFIED,
+ EXPORT_FORMAT_MODE_LAST
+} ExportFormatMode;
+
+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;
+
+typedef enum {
+ JPEG_QUALITY_LOW = 50,
+ JPEG_QUALITY_MEDIUM = 75,
+ JPEG_QUALITY_HIGH = 90,
+ JPEG_QUALITY_MAXIMUM = 100
+} JpegQuality;
+
+struct _ExportFormatParameters {
+ ExportFormatMode mode;
+ PhotoFileFormat specified_format;
+ JpegQuality quality;
+ gboolean export_metadata;
+};
+
+
+static gpointer export_dialog_parent_class = NULL;
+static ScaleConstraint export_dialog_current_constraint;
+static ScaleConstraint export_dialog_current_constraint = SCALE_CONSTRAINT_ORIGINAL;
+static ExportFormatParameters export_dialog_current_parameters;
+static ExportFormatParameters export_dialog_current_parameters = {0};
+static gint export_dialog_current_scale;
+static gint export_dialog_current_scale = 0;
+
+GType export_dialog_get_type (void) G_GNUC_CONST;
+#define EXPORT_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_EXPORT_DIALOG, ExportDialogPrivate))
+enum {
+ EXPORT_DIALOG_DUMMY_PROPERTY
+};
+GType scale_constraint_get_type (void) G_GNUC_CONST;
+GType export_format_parameters_get_type (void) G_GNUC_CONST;
+GType export_format_mode_get_type (void) G_GNUC_CONST;
+GType photo_file_format_get_type (void) G_GNUC_CONST;
+GType jpeg_quality_get_type (void) G_GNUC_CONST;
+ExportFormatParameters* export_format_parameters_dup (const ExportFormatParameters* self);
+void export_format_parameters_free (ExportFormatParameters* self);
+void export_format_parameters_current (ExportFormatParameters* result);
+#define EXPORT_DIALOG_DEFAULT_SCALE 1200
+#define EXPORT_DIALOG_NUM_SPECIAL_FORMATS 2
+#define EXPORT_DIALOG_UNMODIFIED_FORMAT_LABEL _ ("Unmodified")
+#define EXPORT_DIALOG_CURRENT_FORMAT_LABEL _ ("Current")
+ExportDialog* export_dialog_new (const gchar* title);
+ExportDialog* export_dialog_construct (GType object_type, const gchar* title);
+gint resources_use_header_bar (void);
+GType configuration_facade_get_type (void) G_GNUC_CONST;
+GType config_facade_get_type (void) G_GNUC_CONST;
+ConfigFacade* config_facade_get_instance (void);
+ExportFormatMode configuration_facade_get_export_export_format_mode (ConfigurationFacade* self);
+PhotoFileFormat configuration_facade_get_export_photo_file_format (ConfigurationFacade* self);
+JpegQuality configuration_facade_get_export_quality (ConfigurationFacade* self);
+gboolean configuration_facade_get_export_export_metadata (ConfigurationFacade* self);
+ScaleConstraint configuration_facade_get_export_constraint (ConfigurationFacade* self);
+gint configuration_facade_get_export_scale (ConfigurationFacade* self);
+gchar* jpeg_quality_to_string (JpegQuality self);
+gchar* scale_constraint_to_string (ScaleConstraint self);
+static void export_dialog_format_add_option (ExportDialog* self, const gchar* format_name);
+PhotoFileFormat* photo_file_format_get_writeable (int* result_length1);
+gpointer photo_file_format_properties_ref (gpointer instance);
+void photo_file_format_properties_unref (gpointer instance);
+GParamSpec* param_spec_photo_file_format_properties (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void value_set_photo_file_format_properties (GValue* value, gpointer v_object);
+void value_take_photo_file_format_properties (GValue* value, gpointer v_object);
+gpointer value_get_photo_file_format_properties (const GValue* value);
+GType photo_file_format_properties_get_type (void) G_GNUC_CONST;
+PhotoFileFormatProperties* photo_file_format_get_properties (PhotoFileFormat self);
+gchar* photo_file_format_properties_get_user_visible_name (PhotoFileFormatProperties* self);
+static void export_dialog_on_constraint_changed (ExportDialog* self);
+static void _export_dialog_on_constraint_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self);
+static void export_dialog_on_format_changed (ExportDialog* self);
+static void _export_dialog_on_format_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self);
+static void export_dialog_on_pixels_changed (ExportDialog* self);
+static void _export_dialog_on_pixels_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self);
+static void export_dialog_on_pixels_insert_text (ExportDialog* self, const gchar* text, gint length, gint* position);
+static void _export_dialog_on_pixels_insert_text_gtk_editable_insert_text (GtkEditable* _sender, const gchar* new_text, gint new_text_length, gint* position, gpointer self);
+static void export_dialog_on_activate (ExportDialog* self);
+static void _export_dialog_on_activate_gtk_entry_activate (GtkEntry* _sender, gpointer self);
+static void export_dialog_add_label (ExportDialog* self, const gchar* text, gint x, gint y, GtkWidget* widget);
+static void export_dialog_add_control (ExportDialog* self, GtkWidget* widget, gint x, gint y);
+#define RESOURCES_CANCEL_LABEL _ ("_Cancel")
+#define RESOURCES_OK_LABEL _ ("_OK")
+static void export_dialog_format_set_active_text (ExportDialog* self, const gchar* text);
+static PhotoFileFormat export_dialog_get_specified_format (ExportDialog* self);
+static gchar* export_dialog_get_label_for_parameters (ExportDialog* self, ExportFormatParameters* params);
+gboolean export_dialog_execute (ExportDialog* self, gint* scale, ScaleConstraint* constraint, ExportFormatParameters* parameters);
+gboolean photo_file_format_can_write (PhotoFileFormat self);
+PhotoFileFormat photo_file_format_get_system_default_format (void);
+void configuration_facade_set_export_export_format_mode (ConfigurationFacade* self, ExportFormatMode export_format_mode);
+void configuration_facade_set_export_photo_file_format (ConfigurationFacade* self, PhotoFileFormat photo_file_format);
+void configuration_facade_set_export_quality (ConfigurationFacade* self, JpegQuality quality);
+void configuration_facade_set_export_export_metadata (ConfigurationFacade* self, gboolean export_metadata);
+void configuration_facade_set_export_constraint (ConfigurationFacade* self, ScaleConstraint constraint);
+void configuration_facade_set_export_scale (ConfigurationFacade* self, gint scale);
+static void export_dialog_finalize (GObject * obj);
+
+const ScaleConstraint EXPORT_DIALOG_CONSTRAINT_ARRAY[4] = {SCALE_CONSTRAINT_ORIGINAL, SCALE_CONSTRAINT_DIMENSIONS, SCALE_CONSTRAINT_WIDTH, SCALE_CONSTRAINT_HEIGHT};
+const JpegQuality EXPORT_DIALOG_QUALITY_ARRAY[4] = {JPEG_QUALITY_LOW, JPEG_QUALITY_MEDIUM, JPEG_QUALITY_HIGH, JPEG_QUALITY_MAXIMUM};
+
+static void _export_dialog_on_constraint_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self) {
+#line 83 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_on_constraint_changed ((ExportDialog*) self);
+#line 224 "ExportDialog.c"
+}
+
+
+static void _export_dialog_on_format_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self) {
+#line 84 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_on_format_changed ((ExportDialog*) self);
+#line 231 "ExportDialog.c"
+}
+
+
+static void _export_dialog_on_pixels_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self) {
+#line 85 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_on_pixels_changed ((ExportDialog*) self);
+#line 238 "ExportDialog.c"
+}
+
+
+static void _export_dialog_on_pixels_insert_text_gtk_editable_insert_text (GtkEditable* _sender, const gchar* new_text, gint new_text_length, gint* position, gpointer self) {
+#line 86 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_on_pixels_insert_text ((ExportDialog*) self, new_text, new_text_length, position);
+#line 245 "ExportDialog.c"
+}
+
+
+static void _export_dialog_on_activate_gtk_entry_activate (GtkEntry* _sender, gpointer self) {
+#line 87 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_on_activate ((ExportDialog*) self);
+#line 252 "ExportDialog.c"
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+#line 116 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ return self ? g_object_ref (self) : NULL;
+#line 259 "ExportDialog.c"
+}
+
+
+ExportDialog* export_dialog_construct (GType object_type, const gchar* title) {
+ ExportDialog * self = NULL;
+ gint _tmp0_;
+ const gchar* _tmp1_;
+ ConfigFacade* config = NULL;
+ ConfigFacade* _tmp2_;
+ ConfigFacade* _tmp3_;
+ ExportFormatMode _tmp4_;
+ ConfigFacade* _tmp5_;
+ PhotoFileFormat _tmp6_;
+ ConfigFacade* _tmp7_;
+ JpegQuality _tmp8_;
+ ConfigFacade* _tmp9_;
+ gboolean _tmp10_;
+ ConfigFacade* _tmp11_;
+ ScaleConstraint _tmp12_;
+ ConfigFacade* _tmp13_;
+ gint _tmp14_;
+ GtkComboBoxText* _tmp15_;
+ gint ctr = 0;
+ GtkComboBoxText* _tmp26_;
+ GtkComboBoxText* _tmp36_;
+ gint _tmp37_;
+ PhotoFileFormat* _tmp38_;
+ GtkEntry* _tmp44_;
+ GtkEntry* _tmp45_;
+ GtkEntry* _tmp46_;
+ gint _tmp47_;
+ gchar* _tmp48_;
+ gchar* _tmp49_;
+ GtkComboBoxText* _tmp50_;
+ GtkComboBoxText* _tmp51_;
+ GtkEntry* _tmp52_;
+ GtkEntry* _tmp53_;
+ GtkEntry* _tmp54_;
+ GtkComboBoxText* _tmp55_;
+ GtkComboBoxText* _tmp56_;
+ GtkComboBoxText* _tmp57_;
+ GtkComboBoxText* _tmp58_;
+ GtkComboBoxText* _tmp59_;
+ GtkComboBoxText* _tmp60_;
+ GtkEntry* _tmp61_;
+ GtkEntry* _tmp62_;
+ GtkSwitch* _tmp63_;
+ GtkSwitch* _tmp64_;
+ GtkSwitch* _tmp65_;
+ GtkSwitch* _tmp66_;
+ GtkSwitch* _tmp67_;
+ GtkGrid* _tmp68_;
+ GtkGrid* _tmp69_;
+ GtkGrid* _tmp70_;
+ GtkBox* _tmp71_;
+ GtkGrid* _tmp72_;
+ GtkWidget* _tmp73_;
+ GtkWidget* _tmp74_;
+ GtkWidget* _tmp75_;
+ GtkWidget* _tmp76_;
+ GtkWidget* _tmp77_;
+ ScaleConstraint _tmp78_;
+ GtkWidget* _tmp81_;
+#line 38 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_val_if_fail (title != NULL, NULL);
+#line 39 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = resources_use_header_bar ();
+#line 39 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self = (ExportDialog*) g_object_new (object_type, "use-header-bar", _tmp0_, NULL);
+#line 41 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = title;
+#line 41 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_window_set_title (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), _tmp1_);
+#line 42 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_window_set_resizable (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), FALSE);
+#line 45 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = config_facade_get_instance ();
+#line 45 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ config = _tmp2_;
+#line 46 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = config;
+#line 46 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp4_ = configuration_facade_get_export_export_format_mode (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 46 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_parameters.mode = _tmp4_;
+#line 47 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = config;
+#line 47 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = configuration_facade_get_export_photo_file_format (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 47 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_parameters.specified_format = _tmp6_;
+#line 48 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = config;
+#line 48 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp8_ = configuration_facade_get_export_quality (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 48 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_parameters.quality = _tmp8_;
+#line 49 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp9_ = config;
+#line 49 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp10_ = configuration_facade_get_export_export_metadata (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 49 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_parameters.export_metadata = _tmp10_;
+#line 50 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp11_ = config;
+#line 50 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp12_ = configuration_facade_get_export_constraint (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 50 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_constraint = _tmp12_;
+#line 51 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp13_ = config;
+#line 51 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp14_ = configuration_facade_get_export_scale (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 51 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_scale = _tmp14_;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp15_ = (GtkComboBoxText*) gtk_combo_box_text_new ();
+#line 53 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_object_ref_sink (_tmp15_);
+#line 53 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->quality_combo);
+#line 53 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->quality_combo = _tmp15_;
+#line 54 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ ctr = 0;
+#line 385 "ExportDialog.c"
+ {
+ JpegQuality* quality_collection = NULL;
+ gint quality_collection_length1 = 0;
+ gint _quality_collection_size_ = 0;
+ gint quality_it = 0;
+#line 55 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ quality_collection = EXPORT_DIALOG_QUALITY_ARRAY;
+#line 55 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ quality_collection_length1 = G_N_ELEMENTS (EXPORT_DIALOG_QUALITY_ARRAY);
+#line 55 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ for (quality_it = 0; quality_it < G_N_ELEMENTS (EXPORT_DIALOG_QUALITY_ARRAY); quality_it = quality_it + 1) {
+#line 397 "ExportDialog.c"
+ JpegQuality quality = 0;
+#line 55 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ quality = quality_collection[quality_it];
+#line 401 "ExportDialog.c"
+ {
+ GtkComboBoxText* _tmp16_;
+ JpegQuality _tmp17_;
+ gchar* _tmp18_;
+ gchar* _tmp19_;
+ JpegQuality _tmp20_;
+ ExportFormatParameters _tmp21_;
+ JpegQuality _tmp22_;
+ gint _tmp25_;
+#line 56 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp16_ = self->priv->quality_combo;
+#line 56 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp17_ = quality;
+#line 56 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp18_ = jpeg_quality_to_string (_tmp17_);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp19_ = _tmp18_;
+#line 56 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_combo_box_text_append_text (_tmp16_, _tmp19_);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp19_);
+#line 57 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp20_ = quality;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp21_ = export_dialog_current_parameters;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp22_ = _tmp21_.quality;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp20_ == _tmp22_) {
+#line 431 "ExportDialog.c"
+ GtkComboBoxText* _tmp23_;
+ gint _tmp24_;
+#line 58 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp23_ = self->priv->quality_combo;
+#line 58 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp24_ = ctr;
+#line 58 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_combo_box_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, gtk_combo_box_get_type (), GtkComboBox), _tmp24_);
+#line 440 "ExportDialog.c"
+ }
+#line 59 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp25_ = ctr;
+#line 59 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ ctr = _tmp25_ + 1;
+#line 446 "ExportDialog.c"
+ }
+ }
+ }
+#line 62 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp26_ = (GtkComboBoxText*) gtk_combo_box_text_new ();
+#line 62 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_object_ref_sink (_tmp26_);
+#line 62 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->constraint_combo);
+#line 62 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->constraint_combo = _tmp26_;
+#line 63 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ ctr = 0;
+#line 460 "ExportDialog.c"
+ {
+ ScaleConstraint* constraint_collection = NULL;
+ gint constraint_collection_length1 = 0;
+ gint _constraint_collection_size_ = 0;
+ gint constraint_it = 0;
+#line 64 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ constraint_collection = EXPORT_DIALOG_CONSTRAINT_ARRAY;
+#line 64 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ constraint_collection_length1 = G_N_ELEMENTS (EXPORT_DIALOG_CONSTRAINT_ARRAY);
+#line 64 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ for (constraint_it = 0; constraint_it < G_N_ELEMENTS (EXPORT_DIALOG_CONSTRAINT_ARRAY); constraint_it = constraint_it + 1) {
+#line 472 "ExportDialog.c"
+ ScaleConstraint constraint = 0;
+#line 64 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ constraint = constraint_collection[constraint_it];
+#line 476 "ExportDialog.c"
+ {
+ GtkComboBoxText* _tmp27_;
+ ScaleConstraint _tmp28_;
+ gchar* _tmp29_;
+ gchar* _tmp30_;
+ ScaleConstraint _tmp31_;
+ ScaleConstraint _tmp32_;
+ gint _tmp35_;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp27_ = self->priv->constraint_combo;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp28_ = constraint;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp29_ = scale_constraint_to_string (_tmp28_);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp30_ = _tmp29_;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_combo_box_text_append_text (_tmp27_, _tmp30_);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp30_);
+#line 66 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp31_ = constraint;
+#line 66 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp32_ = export_dialog_current_constraint;
+#line 66 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp31_ == _tmp32_) {
+#line 503 "ExportDialog.c"
+ GtkComboBoxText* _tmp33_;
+ gint _tmp34_;
+#line 67 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp33_ = self->priv->constraint_combo;
+#line 67 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp34_ = ctr;
+#line 67 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_combo_box_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp33_, gtk_combo_box_get_type (), GtkComboBox), _tmp34_);
+#line 512 "ExportDialog.c"
+ }
+#line 68 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp35_ = ctr;
+#line 68 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ ctr = _tmp35_ + 1;
+#line 518 "ExportDialog.c"
+ }
+ }
+ }
+#line 71 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp36_ = (GtkComboBoxText*) gtk_combo_box_text_new ();
+#line 71 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_object_ref_sink (_tmp36_);
+#line 71 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->format_combo);
+#line 71 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->format_combo = _tmp36_;
+#line 72 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_format_add_option (self, EXPORT_DIALOG_UNMODIFIED_FORMAT_LABEL);
+#line 73 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_format_add_option (self, EXPORT_DIALOG_CURRENT_FORMAT_LABEL);
+#line 74 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp38_ = photo_file_format_get_writeable (&_tmp37_);
+#line 536 "ExportDialog.c"
+ {
+ PhotoFileFormat* format_collection = NULL;
+ gint format_collection_length1 = 0;
+ gint _format_collection_size_ = 0;
+ gint format_it = 0;
+#line 74 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ format_collection = _tmp38_;
+#line 74 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ format_collection_length1 = _tmp37_;
+#line 74 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ for (format_it = 0; format_it < _tmp37_; format_it = format_it + 1) {
+#line 548 "ExportDialog.c"
+ PhotoFileFormat format = 0;
+#line 74 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ format = format_collection[format_it];
+#line 552 "ExportDialog.c"
+ {
+ PhotoFileFormat _tmp39_;
+ PhotoFileFormatProperties* _tmp40_;
+ PhotoFileFormatProperties* _tmp41_;
+ gchar* _tmp42_;
+ gchar* _tmp43_;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp39_ = format;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp40_ = photo_file_format_get_properties (_tmp39_);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp41_ = _tmp40_;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp42_ = photo_file_format_properties_get_user_visible_name (_tmp41_);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp43_ = _tmp42_;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_format_add_option (self, _tmp43_);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp43_);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _photo_file_format_properties_unref0 (_tmp41_);
+#line 575 "ExportDialog.c"
+ }
+ }
+#line 74 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ format_collection = (g_free (format_collection), NULL);
+#line 580 "ExportDialog.c"
+ }
+#line 78 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp44_ = (GtkEntry*) gtk_entry_new ();
+#line 78 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_object_ref_sink (_tmp44_);
+#line 78 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->pixels_entry);
+#line 78 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->pixels_entry = _tmp44_;
+#line 79 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp45_ = self->priv->pixels_entry;
+#line 79 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_entry_set_max_length (_tmp45_, 6);
+#line 80 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp46_ = self->priv->pixels_entry;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp47_ = export_dialog_current_scale;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp48_ = g_strdup_printf ("%d", _tmp47_);
+#line 80 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp49_ = _tmp48_;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_entry_set_text (_tmp46_, _tmp49_);
+#line 80 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp49_);
+#line 83 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp50_ = self->priv->constraint_combo;
+#line 83 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, gtk_combo_box_get_type (), GtkComboBox), "changed", (GCallback) _export_dialog_on_constraint_changed_gtk_combo_box_changed, self, 0);
+#line 84 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp51_ = self->priv->format_combo;
+#line 84 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, gtk_combo_box_get_type (), GtkComboBox), "changed", (GCallback) _export_dialog_on_format_changed_gtk_combo_box_changed, self, 0);
+#line 85 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp52_ = self->priv->pixels_entry;
+#line 85 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, GTK_TYPE_EDITABLE, GtkEditable), "changed", (GCallback) _export_dialog_on_pixels_changed_gtk_editable_changed, self, 0);
+#line 86 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp53_ = self->priv->pixels_entry;
+#line 86 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp53_, GTK_TYPE_EDITABLE, GtkEditable), "insert-text", (GCallback) _export_dialog_on_pixels_insert_text_gtk_editable_insert_text, self, 0);
+#line 87 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp54_ = self->priv->pixels_entry;
+#line 87 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_signal_connect_object (_tmp54_, "activate", (GCallback) _export_dialog_on_activate_gtk_entry_activate, self, 0);
+#line 90 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp55_ = self->priv->format_combo;
+#line 90 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_add_label (self, _ ("_Format:"), 0, 0, G_TYPE_CHECK_INSTANCE_CAST (_tmp55_, gtk_widget_get_type (), GtkWidget));
+#line 91 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp56_ = self->priv->format_combo;
+#line 91 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_add_control (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp56_, gtk_widget_get_type (), GtkWidget), 1, 0);
+#line 93 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp57_ = self->priv->quality_combo;
+#line 93 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_add_label (self, _ ("_Quality:"), 0, 1, G_TYPE_CHECK_INSTANCE_CAST (_tmp57_, gtk_widget_get_type (), GtkWidget));
+#line 94 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp58_ = self->priv->quality_combo;
+#line 94 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_add_control (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp58_, gtk_widget_get_type (), GtkWidget), 1, 1);
+#line 96 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp59_ = self->priv->constraint_combo;
+#line 96 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_add_label (self, _ ("_Scaling constraint:"), 0, 2, G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, gtk_widget_get_type (), GtkWidget));
+#line 97 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp60_ = self->priv->constraint_combo;
+#line 97 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_add_control (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp60_, gtk_widget_get_type (), GtkWidget), 1, 2);
+#line 99 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp61_ = self->priv->pixels_entry;
+#line 99 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_add_label (self, _ ("_Pixels:"), 0, 3, G_TYPE_CHECK_INSTANCE_CAST (_tmp61_, gtk_widget_get_type (), GtkWidget));
+#line 100 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp62_ = self->priv->pixels_entry;
+#line 100 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_add_control (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp62_, gtk_widget_get_type (), GtkWidget), 1, 3);
+#line 102 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp63_ = (GtkSwitch*) gtk_switch_new ();
+#line 102 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_object_ref_sink (_tmp63_);
+#line 102 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->export_metadata);
+#line 102 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->export_metadata = _tmp63_;
+#line 103 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp64_ = self->priv->export_metadata;
+#line 103 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_add_label (self, _ ("Export _metadata:"), 0, 4, G_TYPE_CHECK_INSTANCE_CAST (_tmp64_, gtk_widget_get_type (), GtkWidget));
+#line 104 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp65_ = self->priv->export_metadata;
+#line 104 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_add_control (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp65_, gtk_widget_get_type (), GtkWidget), 1, 4);
+#line 105 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp66_ = self->priv->export_metadata;
+#line 105 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_switch_set_active (_tmp66_, TRUE);
+#line 106 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp67_ = self->priv->export_metadata;
+#line 106 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (_tmp67_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_START);
+#line 108 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp68_ = self->priv->table;
+#line 108 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_grid_set_row_spacing (_tmp68_, (guint) 6);
+#line 109 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp69_ = self->priv->table;
+#line 109 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_grid_set_column_spacing (_tmp69_, (guint) 12);
+#line 110 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp70_ = self->priv->table;
+#line 110 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_container_set_border_width (G_TYPE_CHECK_INSTANCE_CAST (_tmp70_, gtk_container_get_type (), GtkContainer), (guint) 18);
+#line 112 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp71_ = (GtkBox*) gtk_dialog_get_content_area (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog));
+#line 112 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp72_ = self->priv->table;
+#line 112 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (_tmp71_, gtk_box_get_type (), GtkBox), gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (_tmp72_, gtk_widget_get_type (), GtkWidget));
+#line 115 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_dialog_add_button (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), RESOURCES_CANCEL_LABEL, (gint) GTK_RESPONSE_CANCEL);
+#line 116 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp73_ = gtk_dialog_add_button (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), RESOURCES_OK_LABEL, (gint) GTK_RESPONSE_OK);
+#line 116 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp74_ = _g_object_ref0 (_tmp73_);
+#line 116 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->ok_button);
+#line 116 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->ok_button = _tmp74_;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_dialog_set_default_response (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), (gint) GTK_RESPONSE_OK);
+#line 119 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp75_ = self->priv->ok_button;
+#line 119 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_can_default (_tmp75_, TRUE);
+#line 120 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp76_ = self->priv->ok_button;
+#line 120 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_object_set (_tmp76_, "has-default", TRUE, NULL);
+#line 121 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp77_ = self->priv->ok_button;
+#line 121 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_window_set_default (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), _tmp77_);
+#line 123 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp78_ = export_dialog_current_constraint;
+#line 123 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp78_ == SCALE_CONSTRAINT_ORIGINAL) {
+#line 728 "ExportDialog.c"
+ GtkEntry* _tmp79_;
+ GtkComboBoxText* _tmp80_;
+#line 124 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp79_ = self->priv->pixels_entry;
+#line 124 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp79_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 125 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp80_ = self->priv->quality_combo;
+#line 125 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp80_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 739 "ExportDialog.c"
+ }
+#line 128 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp81_ = self->priv->ok_button;
+#line 128 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_grab_focus (_tmp81_);
+#line 38 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (config);
+#line 38 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ return self;
+#line 749 "ExportDialog.c"
+}
+
+
+ExportDialog* export_dialog_new (const gchar* title) {
+#line 38 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ return export_dialog_construct (TYPE_EXPORT_DIALOG, title);
+#line 756 "ExportDialog.c"
+}
+
+
+static void export_dialog_format_add_option (ExportDialog* self, const gchar* format_name) {
+ GeeArrayList* _tmp0_;
+ const gchar* _tmp1_;
+ GtkComboBoxText* _tmp2_;
+ const gchar* _tmp3_;
+#line 131 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (IS_EXPORT_DIALOG (self));
+#line 131 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (format_name != NULL);
+#line 132 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = self->priv->format_options;
+#line 132 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = format_name;
+#line 132 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp1_);
+#line 133 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = self->priv->format_combo;
+#line 133 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = format_name;
+#line 133 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_combo_box_text_append_text (_tmp2_, _tmp3_);
+#line 781 "ExportDialog.c"
+}
+
+
+static void export_dialog_format_set_active_text (ExportDialog* self, const gchar* text) {
+ gint selection_ticker = 0;
+ const gchar* _tmp16_;
+#line 136 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (IS_EXPORT_DIALOG (self));
+#line 136 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (text != NULL);
+#line 137 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ selection_ticker = 0;
+#line 794 "ExportDialog.c"
+ {
+ GeeArrayList* _current_text_list = NULL;
+ GeeArrayList* _tmp0_;
+ GeeArrayList* _tmp1_;
+ gint _current_text_size = 0;
+ GeeArrayList* _tmp2_;
+ gint _tmp3_;
+ gint _tmp4_;
+ gint _current_text_index = 0;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = self->priv->format_options;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _current_text_list = _tmp1_;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = _current_text_list;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp4_ = _tmp3_;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _current_text_size = _tmp4_;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _current_text_index = -1;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ while (TRUE) {
+#line 822 "ExportDialog.c"
+ gint _tmp5_;
+ gint _tmp6_;
+ gint _tmp7_;
+ gchar* current_text = NULL;
+ GeeArrayList* _tmp8_;
+ gint _tmp9_;
+ gpointer _tmp10_;
+ const gchar* _tmp11_;
+ const gchar* _tmp12_;
+ gint _tmp15_;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = _current_text_index;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _current_text_index = _tmp5_ + 1;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = _current_text_index;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = _current_text_size;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (!(_tmp6_ < _tmp7_)) {
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ break;
+#line 845 "ExportDialog.c"
+ }
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp8_ = _current_text_list;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp9_ = _current_text_index;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp10_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp9_);
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ current_text = (gchar*) _tmp10_;
+#line 140 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp11_ = current_text;
+#line 140 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp12_ = text;
+#line 140 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (g_strcmp0 (_tmp11_, _tmp12_) == 0) {
+#line 861 "ExportDialog.c"
+ GtkComboBoxText* _tmp13_;
+ gint _tmp14_;
+#line 141 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp13_ = self->priv->format_combo;
+#line 141 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp14_ = selection_ticker;
+#line 141 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_combo_box_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, gtk_combo_box_get_type (), GtkComboBox), _tmp14_);
+#line 142 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (current_text);
+#line 142 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (_current_text_list);
+#line 142 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ return;
+#line 876 "ExportDialog.c"
+ }
+#line 144 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp15_ = selection_ticker;
+#line 144 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ selection_ticker = _tmp15_ + 1;
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (current_text);
+#line 884 "ExportDialog.c"
+ }
+#line 139 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (_current_text_list);
+#line 888 "ExportDialog.c"
+ }
+#line 147 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp16_ = text;
+#line 147 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_error ("ExportDialog.vala:147: format_set_active_text: text '%s' isn't in comb" \
+"o box", _tmp16_);
+#line 894 "ExportDialog.c"
+}
+
+
+static PhotoFileFormat export_dialog_get_specified_format (ExportDialog* self) {
+ PhotoFileFormat result = 0;
+ gint index = 0;
+ GtkComboBoxText* _tmp0_;
+ gint _tmp1_;
+ gint _tmp2_;
+ gint _tmp3_;
+ PhotoFileFormat* writeable_formats = NULL;
+ gint _tmp4_;
+ PhotoFileFormat* _tmp5_;
+ gint writeable_formats_length1;
+ gint _writeable_formats_size_;
+ gint _tmp6_;
+ PhotoFileFormat _tmp7_;
+#line 150 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_val_if_fail (IS_EXPORT_DIALOG (self), 0);
+#line 151 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = self->priv->format_combo;
+#line 151 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, gtk_combo_box_get_type (), GtkComboBox));
+#line 151 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ index = _tmp1_;
+#line 152 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = index;
+#line 152 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp2_ < EXPORT_DIALOG_NUM_SPECIAL_FORMATS) {
+#line 153 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ index = EXPORT_DIALOG_NUM_SPECIAL_FORMATS;
+#line 926 "ExportDialog.c"
+ }
+#line 155 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = index;
+#line 155 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ index = _tmp3_ - EXPORT_DIALOG_NUM_SPECIAL_FORMATS;
+#line 156 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = photo_file_format_get_writeable (&_tmp4_);
+#line 156 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ writeable_formats = _tmp5_;
+#line 156 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ writeable_formats_length1 = _tmp4_;
+#line 156 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _writeable_formats_size_ = writeable_formats_length1;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = index;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = writeable_formats[_tmp6_];
+#line 157 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ result = _tmp7_;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ writeable_formats = (g_free (writeable_formats), NULL);
+#line 157 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ return result;
+#line 950 "ExportDialog.c"
+}
+
+
+static gchar* export_dialog_get_label_for_parameters (ExportDialog* self, ExportFormatParameters* params) {
+ gchar* result = NULL;
+ ExportFormatParameters _tmp0_;
+ ExportFormatMode _tmp1_;
+#line 160 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_val_if_fail (IS_EXPORT_DIALOG (self), NULL);
+#line 160 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_val_if_fail (params != NULL, NULL);
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = *params;
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = _tmp0_.mode;
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ switch (_tmp1_) {
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ case EXPORT_FORMAT_MODE_UNMODIFIED:
+#line 970 "ExportDialog.c"
+ {
+ gchar* _tmp2_;
+#line 163 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = g_strdup (EXPORT_DIALOG_UNMODIFIED_FORMAT_LABEL);
+#line 163 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ result = _tmp2_;
+#line 163 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ return result;
+#line 979 "ExportDialog.c"
+ }
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ case EXPORT_FORMAT_MODE_CURRENT:
+#line 983 "ExportDialog.c"
+ {
+ gchar* _tmp3_;
+#line 166 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = g_strdup (EXPORT_DIALOG_CURRENT_FORMAT_LABEL);
+#line 166 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ result = _tmp3_;
+#line 166 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ return result;
+#line 992 "ExportDialog.c"
+ }
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ case EXPORT_FORMAT_MODE_SPECIFIED:
+#line 996 "ExportDialog.c"
+ {
+ ExportFormatParameters _tmp4_;
+ PhotoFileFormat _tmp5_;
+ PhotoFileFormatProperties* _tmp6_;
+ PhotoFileFormatProperties* _tmp7_;
+ gchar* _tmp8_;
+ gchar* _tmp9_;
+#line 169 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp4_ = *params;
+#line 169 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = _tmp4_.specified_format;
+#line 169 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = photo_file_format_get_properties (_tmp5_);
+#line 169 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = _tmp6_;
+#line 169 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp8_ = photo_file_format_properties_get_user_visible_name (_tmp7_);
+#line 169 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp9_ = _tmp8_;
+#line 169 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _photo_file_format_properties_unref0 (_tmp7_);
+#line 169 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ result = _tmp9_;
+#line 169 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ return result;
+#line 1022 "ExportDialog.c"
+ }
+ default:
+ {
+#line 172 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_error ("ExportDialog.vala:172: get_label_for_parameters: unrecognized export f" \
+"ormat mode");
+#line 1028 "ExportDialog.c"
+ }
+ }
+}
+
+
+gboolean export_dialog_execute (ExportDialog* self, gint* scale, ScaleConstraint* constraint, ExportFormatParameters* parameters) {
+ gint _vala_scale = 0;
+ ScaleConstraint _vala_constraint = 0;
+ gboolean result = FALSE;
+ ExportFormatParameters _tmp0_;
+ ExportFormatMode _tmp1_;
+ ExportFormatParameters _tmp4_;
+ ExportFormatMode _tmp5_;
+ ExportFormatParameters _tmp14_;
+ gchar* _tmp15_;
+ gchar* _tmp16_;
+ gboolean ok = FALSE;
+ gint _tmp17_;
+ gboolean _tmp18_;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_val_if_fail (IS_EXPORT_DIALOG (self), FALSE);
+#line 179 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_val_if_fail (parameters != NULL, FALSE);
+#line 181 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 185 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = *parameters;
+#line 185 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = _tmp0_.mode;
+#line 185 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp1_ != EXPORT_FORMAT_MODE_LAST) {
+#line 1060 "ExportDialog.c"
+ ScaleConstraint _tmp2_;
+ GtkComboBoxText* _tmp3_;
+#line 186 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _vala_constraint = SCALE_CONSTRAINT_ORIGINAL;
+#line 186 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = _vala_constraint;
+#line 186 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_constraint = _tmp2_;
+#line 187 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = self->priv->constraint_combo;
+#line 187 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_combo_box_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, gtk_combo_box_get_type (), GtkComboBox), 0);
+#line 1073 "ExportDialog.c"
+ }
+#line 190 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp4_ = *parameters;
+#line 190 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = _tmp4_.mode;
+#line 190 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp5_ == EXPORT_FORMAT_MODE_LAST) {
+#line 1081 "ExportDialog.c"
+ ExportFormatParameters _tmp6_;
+#line 191 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = export_dialog_current_parameters;
+#line 191 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ *parameters = _tmp6_;
+#line 1087 "ExportDialog.c"
+ } else {
+ gboolean _tmp7_ = FALSE;
+ ExportFormatParameters _tmp8_;
+ ExportFormatMode _tmp9_;
+#line 192 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp8_ = *parameters;
+#line 192 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp9_ = _tmp8_.mode;
+#line 192 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp9_ == EXPORT_FORMAT_MODE_SPECIFIED) {
+#line 1098 "ExportDialog.c"
+ ExportFormatParameters _tmp10_;
+ PhotoFileFormat _tmp11_;
+ gboolean _tmp12_;
+#line 192 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp10_ = *parameters;
+#line 192 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp11_ = _tmp10_.specified_format;
+#line 192 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp12_ = photo_file_format_can_write (_tmp11_);
+#line 192 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = !_tmp12_;
+#line 1110 "ExportDialog.c"
+ } else {
+#line 192 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = FALSE;
+#line 1114 "ExportDialog.c"
+ }
+#line 192 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp7_) {
+#line 1118 "ExportDialog.c"
+ PhotoFileFormat _tmp13_;
+#line 193 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp13_ = photo_file_format_get_system_default_format ();
+#line 193 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ (*parameters).specified_format = _tmp13_;
+#line 1124 "ExportDialog.c"
+ }
+ }
+#line 195 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp14_ = *parameters;
+#line 195 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp15_ = export_dialog_get_label_for_parameters (self, &_tmp14_);
+#line 195 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp16_ = _tmp15_;
+#line 195 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_format_set_active_text (self, _tmp16_);
+#line 195 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp16_);
+#line 196 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_on_format_changed (self);
+#line 198 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp17_ = gtk_dialog_run (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog));
+#line 198 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ ok = _tmp17_ == ((gint) GTK_RESPONSE_OK);
+#line 199 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp18_ = ok;
+#line 199 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp18_) {
+#line 1147 "ExportDialog.c"
+ gint index = 0;
+ GtkComboBoxText* _tmp19_;
+ gint _tmp20_;
+ gint _tmp21_;
+ gint _tmp22_;
+ ScaleConstraint _tmp23_;
+ ScaleConstraint _tmp24_;
+ GtkEntry* _tmp25_;
+ const gchar* _tmp26_;
+ gint _tmp27_;
+ ScaleConstraint _tmp28_;
+ gint _tmp30_;
+ gboolean _tmp31_ = FALSE;
+ GtkSwitch* _tmp32_;
+ gboolean _tmp33_;
+ gboolean _tmp34_;
+ GtkComboBoxText* _tmp38_;
+ gchar* _tmp39_;
+ gchar* _tmp40_;
+ gboolean _tmp41_;
+ ConfigFacade* config = NULL;
+ ConfigFacade* _tmp57_;
+ ConfigFacade* _tmp58_;
+ ExportFormatParameters _tmp59_;
+ ExportFormatMode _tmp60_;
+ ConfigFacade* _tmp61_;
+ ExportFormatParameters _tmp62_;
+ PhotoFileFormat _tmp63_;
+ ConfigFacade* _tmp64_;
+ ExportFormatParameters _tmp65_;
+ JpegQuality _tmp66_;
+ ConfigFacade* _tmp67_;
+ ExportFormatParameters _tmp68_;
+ gboolean _tmp69_;
+ ConfigFacade* _tmp70_;
+ ScaleConstraint _tmp71_;
+ ConfigFacade* _tmp72_;
+ gint _tmp73_;
+#line 200 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp19_ = self->priv->constraint_combo;
+#line 200 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp20_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, gtk_combo_box_get_type (), GtkComboBox));
+#line 200 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ index = _tmp20_;
+#line 201 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp21_ = index;
+#line 201 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _vala_assert (_tmp21_ >= 0, "index >= 0");
+#line 202 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp22_ = index;
+#line 202 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp23_ = EXPORT_DIALOG_CONSTRAINT_ARRAY[_tmp22_];
+#line 202 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _vala_constraint = _tmp23_;
+#line 203 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp24_ = _vala_constraint;
+#line 203 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_constraint = _tmp24_;
+#line 205 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp25_ = self->priv->pixels_entry;
+#line 205 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp26_ = gtk_entry_get_text (_tmp25_);
+#line 205 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp27_ = atoi (_tmp26_);
+#line 205 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _vala_scale = _tmp27_;
+#line 206 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp28_ = _vala_constraint;
+#line 206 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp28_ != SCALE_CONSTRAINT_ORIGINAL) {
+#line 1218 "ExportDialog.c"
+ gint _tmp29_;
+#line 207 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp29_ = _vala_scale;
+#line 207 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _vala_assert (_tmp29_ > 0, "scale > 0");
+#line 1224 "ExportDialog.c"
+ }
+#line 208 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp30_ = _vala_scale;
+#line 208 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_scale = _tmp30_;
+#line 210 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp32_ = self->priv->export_metadata;
+#line 210 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp33_ = gtk_widget_get_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp32_, gtk_widget_get_type (), GtkWidget));
+#line 210 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp34_ = _tmp33_;
+#line 210 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp34_) {
+#line 1238 "ExportDialog.c"
+ GtkSwitch* _tmp35_;
+ gboolean _tmp36_;
+ gboolean _tmp37_;
+#line 210 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp35_ = self->priv->export_metadata;
+#line 210 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp36_ = gtk_switch_get_active (_tmp35_);
+#line 210 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp37_ = _tmp36_;
+#line 210 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp31_ = _tmp37_;
+#line 1250 "ExportDialog.c"
+ } else {
+#line 210 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp31_ = FALSE;
+#line 1254 "ExportDialog.c"
+ }
+#line 210 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ (*parameters).export_metadata = _tmp31_;
+#line 212 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp38_ = self->priv->format_combo;
+#line 212 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp39_ = gtk_combo_box_text_get_active_text (_tmp38_);
+#line 212 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp40_ = _tmp39_;
+#line 212 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp41_ = g_strcmp0 (_tmp40_, EXPORT_DIALOG_UNMODIFIED_FORMAT_LABEL) == 0;
+#line 212 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp40_);
+#line 212 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp41_) {
+#line 1270 "ExportDialog.c"
+ ExportFormatMode _tmp42_;
+#line 213 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_parameters.mode = EXPORT_FORMAT_MODE_UNMODIFIED;
+#line 213 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp42_ = export_dialog_current_parameters.mode;
+#line 213 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ (*parameters).mode = _tmp42_;
+#line 1278 "ExportDialog.c"
+ } else {
+ GtkComboBoxText* _tmp43_;
+ gchar* _tmp44_;
+ gchar* _tmp45_;
+ gboolean _tmp46_;
+#line 214 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp43_ = self->priv->format_combo;
+#line 214 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp44_ = gtk_combo_box_text_get_active_text (_tmp43_);
+#line 214 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp45_ = _tmp44_;
+#line 214 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp46_ = g_strcmp0 (_tmp45_, EXPORT_DIALOG_CURRENT_FORMAT_LABEL) == 0;
+#line 214 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp45_);
+#line 214 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp46_) {
+#line 1296 "ExportDialog.c"
+ ExportFormatMode _tmp47_;
+#line 215 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_parameters.mode = EXPORT_FORMAT_MODE_CURRENT;
+#line 215 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp47_ = export_dialog_current_parameters.mode;
+#line 215 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ (*parameters).mode = _tmp47_;
+#line 1304 "ExportDialog.c"
+ } else {
+ ExportFormatMode _tmp48_;
+ PhotoFileFormat _tmp49_;
+ PhotoFileFormat _tmp50_;
+ ExportFormatParameters _tmp51_;
+ PhotoFileFormat _tmp52_;
+#line 217 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_parameters.mode = EXPORT_FORMAT_MODE_SPECIFIED;
+#line 217 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp48_ = export_dialog_current_parameters.mode;
+#line 217 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ (*parameters).mode = _tmp48_;
+#line 218 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp49_ = export_dialog_get_specified_format (self);
+#line 218 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_parameters.specified_format = _tmp49_;
+#line 218 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp50_ = export_dialog_current_parameters.specified_format;
+#line 218 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ (*parameters).specified_format = _tmp50_;
+#line 219 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp51_ = export_dialog_current_parameters;
+#line 219 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp52_ = _tmp51_.specified_format;
+#line 219 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp52_ == PHOTO_FILE_FORMAT_JFIF) {
+#line 1331 "ExportDialog.c"
+ GtkComboBoxText* _tmp53_;
+ gint _tmp54_;
+ JpegQuality _tmp55_;
+ JpegQuality _tmp56_;
+#line 220 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp53_ = self->priv->quality_combo;
+#line 220 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp54_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp53_, gtk_combo_box_get_type (), GtkComboBox));
+#line 220 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp55_ = EXPORT_DIALOG_QUALITY_ARRAY[_tmp54_];
+#line 220 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_parameters.quality = _tmp55_;
+#line 220 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp56_ = export_dialog_current_parameters.quality;
+#line 220 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ (*parameters).quality = _tmp56_;
+#line 1348 "ExportDialog.c"
+ }
+ }
+ }
+#line 224 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp57_ = config_facade_get_instance ();
+#line 224 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ config = _tmp57_;
+#line 225 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp58_ = config;
+#line 225 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp59_ = export_dialog_current_parameters;
+#line 225 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp60_ = _tmp59_.mode;
+#line 225 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ configuration_facade_set_export_export_format_mode (G_TYPE_CHECK_INSTANCE_CAST (_tmp58_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp60_);
+#line 226 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp61_ = config;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp62_ = export_dialog_current_parameters;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp63_ = _tmp62_.specified_format;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ configuration_facade_set_export_photo_file_format (G_TYPE_CHECK_INSTANCE_CAST (_tmp61_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp63_);
+#line 227 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp64_ = config;
+#line 227 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp65_ = export_dialog_current_parameters;
+#line 227 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp66_ = _tmp65_.quality;
+#line 227 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ configuration_facade_set_export_quality (G_TYPE_CHECK_INSTANCE_CAST (_tmp64_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp66_);
+#line 228 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp67_ = config;
+#line 228 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp68_ = export_dialog_current_parameters;
+#line 228 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp69_ = _tmp68_.export_metadata;
+#line 228 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ configuration_facade_set_export_export_metadata (G_TYPE_CHECK_INSTANCE_CAST (_tmp67_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp69_);
+#line 229 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp70_ = config;
+#line 229 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp71_ = export_dialog_current_constraint;
+#line 229 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ configuration_facade_set_export_constraint (G_TYPE_CHECK_INSTANCE_CAST (_tmp70_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp71_);
+#line 230 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp72_ = config;
+#line 230 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp73_ = export_dialog_current_scale;
+#line 230 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ configuration_facade_set_export_scale (G_TYPE_CHECK_INSTANCE_CAST (_tmp72_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp73_);
+#line 199 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (config);
+#line 1402 "ExportDialog.c"
+ } else {
+#line 232 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _vala_scale = 0;
+#line 233 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _vala_constraint = SCALE_CONSTRAINT_ORIGINAL;
+#line 1408 "ExportDialog.c"
+ }
+#line 236 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_destroy (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 238 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ result = ok;
+#line 238 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (scale) {
+#line 238 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ *scale = _vala_scale;
+#line 1418 "ExportDialog.c"
+ }
+#line 238 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (constraint) {
+#line 238 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ *constraint = _vala_constraint;
+#line 1424 "ExportDialog.c"
+ }
+#line 238 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ return result;
+#line 1428 "ExportDialog.c"
+}
+
+
+static void export_dialog_add_label (ExportDialog* self, const gchar* text, gint x, gint y, GtkWidget* widget) {
+ GtkLabel* new_label = NULL;
+ const gchar* _tmp0_;
+ GtkLabel* _tmp1_;
+ GtkLabel* _tmp2_;
+ GtkLabel* _tmp3_;
+ GtkLabel* _tmp4_;
+ GtkWidget* _tmp5_;
+ GtkGrid* _tmp8_;
+ GtkLabel* _tmp9_;
+ gint _tmp10_;
+ gint _tmp11_;
+#line 241 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (IS_EXPORT_DIALOG (self));
+#line 241 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (text != NULL);
+#line 241 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail ((widget == NULL) || GTK_IS_WIDGET (widget));
+#line 242 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = text;
+#line 242 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = (GtkLabel*) gtk_label_new_with_mnemonic (_tmp0_);
+#line 242 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_object_ref_sink (_tmp1_);
+#line 242 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ new_label = _tmp1_;
+#line 243 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = new_label;
+#line 243 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_END);
+#line 244 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = new_label;
+#line 244 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_valign (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_CENTER);
+#line 245 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp4_ = new_label;
+#line 245 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_label_set_use_underline (_tmp4_, TRUE);
+#line 247 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = widget;
+#line 247 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp5_ != NULL) {
+#line 1474 "ExportDialog.c"
+ GtkLabel* _tmp6_;
+ GtkWidget* _tmp7_;
+#line 248 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = new_label;
+#line 248 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = widget;
+#line 248 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_label_set_mnemonic_widget (_tmp6_, _tmp7_);
+#line 1483 "ExportDialog.c"
+ }
+#line 250 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp8_ = self->priv->table;
+#line 250 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp9_ = new_label;
+#line 250 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp10_ = x;
+#line 250 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp11_ = y;
+#line 250 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_grid_attach (_tmp8_, G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_widget_get_type (), GtkWidget), _tmp10_, _tmp11_, 1, 1);
+#line 241 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (new_label);
+#line 1497 "ExportDialog.c"
+}
+
+
+static void export_dialog_add_control (ExportDialog* self, GtkWidget* widget, gint x, gint y) {
+ GtkWidget* _tmp0_;
+ GtkWidget* _tmp1_;
+ GtkWidget* _tmp2_;
+ GtkWidget* _tmp3_;
+ GtkGrid* _tmp4_;
+ GtkWidget* _tmp5_;
+ gint _tmp6_;
+ gint _tmp7_;
+#line 253 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (IS_EXPORT_DIALOG (self));
+#line 253 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 254 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = widget;
+#line 254 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_halign (_tmp0_, GTK_ALIGN_FILL);
+#line 255 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = widget;
+#line 255 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_valign (_tmp1_, GTK_ALIGN_CENTER);
+#line 256 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = widget;
+#line 256 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_hexpand (_tmp2_, TRUE);
+#line 257 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = widget;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_vexpand (_tmp3_, TRUE);
+#line 259 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp4_ = self->priv->table;
+#line 259 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = widget;
+#line 259 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = x;
+#line 259 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = y;
+#line 259 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_grid_attach (_tmp4_, _tmp5_, _tmp6_, _tmp7_, 1, 1);
+#line 1540 "ExportDialog.c"
+}
+
+
+static void export_dialog_on_constraint_changed (ExportDialog* self) {
+ gboolean original = FALSE;
+ GtkComboBoxText* _tmp0_;
+ gint _tmp1_;
+ ScaleConstraint _tmp2_;
+ gboolean jpeg = FALSE;
+ GtkComboBoxText* _tmp3_;
+ gchar* _tmp4_;
+ gchar* _tmp5_;
+ PhotoFileFormatProperties* _tmp6_;
+ PhotoFileFormatProperties* _tmp7_;
+ gchar* _tmp8_;
+ gchar* _tmp9_;
+ gboolean _tmp10_;
+ GtkEntry* _tmp11_;
+ gboolean _tmp12_;
+ gboolean _tmp13_ = FALSE;
+ gboolean _tmp14_;
+ GtkComboBoxText* _tmp16_;
+ gboolean _tmp17_;
+#line 262 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (IS_EXPORT_DIALOG (self));
+#line 263 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = self->priv->constraint_combo;
+#line 263 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, gtk_combo_box_get_type (), GtkComboBox));
+#line 263 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = EXPORT_DIALOG_CONSTRAINT_ARRAY[_tmp1_];
+#line 263 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ original = _tmp2_ == SCALE_CONSTRAINT_ORIGINAL;
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = self->priv->format_combo;
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp4_ = gtk_combo_box_text_get_active_text (_tmp3_);
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = _tmp4_;
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = photo_file_format_get_properties (PHOTO_FILE_FORMAT_JFIF);
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = _tmp6_;
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp8_ = photo_file_format_properties_get_user_visible_name (_tmp7_);
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp9_ = _tmp8_;
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp10_ = g_strcmp0 (_tmp5_, _tmp9_) == 0;
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp9_);
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _photo_file_format_properties_unref0 (_tmp7_);
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp5_);
+#line 264 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ jpeg = _tmp10_;
+#line 266 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp11_ = self->priv->pixels_entry;
+#line 266 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp12_ = original;
+#line 266 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, gtk_widget_get_type (), GtkWidget), !_tmp12_);
+#line 267 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp14_ = original;
+#line 267 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (!_tmp14_) {
+#line 1608 "ExportDialog.c"
+ gboolean _tmp15_;
+#line 267 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp15_ = jpeg;
+#line 267 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp13_ = _tmp15_;
+#line 1614 "ExportDialog.c"
+ } else {
+#line 267 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp13_ = FALSE;
+#line 1618 "ExportDialog.c"
+ }
+#line 267 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp16_ = self->priv->quality_combo;
+#line 267 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, gtk_widget_get_type (), GtkWidget), _tmp13_);
+#line 268 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp17_ = original;
+#line 268 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp17_) {
+#line 1628 "ExportDialog.c"
+ GtkWidget* _tmp18_;
+#line 269 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp18_ = self->priv->ok_button;
+#line 269 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (_tmp18_, TRUE);
+#line 1634 "ExportDialog.c"
+ } else {
+#line 271 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_on_pixels_changed (self);
+#line 1638 "ExportDialog.c"
+ }
+}
+
+
+static void export_dialog_on_format_changed (ExportDialog* self) {
+ gboolean original = FALSE;
+ GtkComboBoxText* _tmp0_;
+ gint _tmp1_;
+ ScaleConstraint _tmp2_;
+ GtkComboBoxText* _tmp3_;
+ gchar* _tmp4_;
+ gchar* _tmp5_;
+ gboolean _tmp6_;
+#line 274 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (IS_EXPORT_DIALOG (self));
+#line 275 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = self->priv->constraint_combo;
+#line 275 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, gtk_combo_box_get_type (), GtkComboBox));
+#line 275 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = EXPORT_DIALOG_CONSTRAINT_ARRAY[_tmp1_];
+#line 275 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ original = _tmp2_ == SCALE_CONSTRAINT_ORIGINAL;
+#line 277 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = self->priv->format_combo;
+#line 277 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp4_ = gtk_combo_box_text_get_active_text (_tmp3_);
+#line 277 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = _tmp4_;
+#line 277 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = g_strcmp0 (_tmp5_, EXPORT_DIALOG_UNMODIFIED_FORMAT_LABEL) == 0;
+#line 277 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp5_);
+#line 277 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp6_) {
+#line 1674 "ExportDialog.c"
+ GtkComboBoxText* _tmp7_;
+ GtkComboBoxText* _tmp8_;
+ GtkComboBoxText* _tmp9_;
+ GtkEntry* _tmp10_;
+ GtkSwitch* _tmp11_;
+ GtkSwitch* _tmp12_;
+#line 282 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = self->priv->constraint_combo;
+#line 282 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_combo_box_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, gtk_combo_box_get_type (), GtkComboBox), 0);
+#line 283 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp8_ = self->priv->constraint_combo;
+#line 283 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 284 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp9_ = self->priv->quality_combo;
+#line 284 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 285 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp10_ = self->priv->pixels_entry;
+#line 285 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 286 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp11_ = self->priv->export_metadata;
+#line 286 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_switch_set_active (_tmp11_, FALSE);
+#line 287 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp12_ = self->priv->export_metadata;
+#line 287 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 1705 "ExportDialog.c"
+ } else {
+ GtkComboBoxText* _tmp13_;
+ gchar* _tmp14_;
+ gchar* _tmp15_;
+ gboolean _tmp16_;
+#line 288 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp13_ = self->priv->format_combo;
+#line 288 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp14_ = gtk_combo_box_text_get_active_text (_tmp13_);
+#line 288 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp15_ = _tmp14_;
+#line 288 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp16_ = g_strcmp0 (_tmp15_, EXPORT_DIALOG_CURRENT_FORMAT_LABEL) == 0;
+#line 288 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp15_);
+#line 288 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp16_) {
+#line 1723 "ExportDialog.c"
+ GtkComboBoxText* _tmp17_;
+ GtkComboBoxText* _tmp18_;
+ GtkEntry* _tmp19_;
+ gboolean _tmp20_;
+ GtkSwitch* _tmp21_;
+#line 295 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp17_ = self->priv->constraint_combo;
+#line 295 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, gtk_widget_get_type (), GtkWidget), TRUE);
+#line 296 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp18_ = self->priv->quality_combo;
+#line 296 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 297 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp19_ = self->priv->pixels_entry;
+#line 297 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp20_ = original;
+#line 297 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, gtk_widget_get_type (), GtkWidget), !_tmp20_);
+#line 298 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp21_ = self->priv->export_metadata;
+#line 298 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, gtk_widget_get_type (), GtkWidget), TRUE);
+#line 1747 "ExportDialog.c"
+ } else {
+ GtkComboBoxText* _tmp22_;
+ gboolean jpeg = FALSE;
+ PhotoFileFormat _tmp23_;
+ gboolean _tmp24_ = FALSE;
+ gboolean _tmp25_;
+ GtkComboBoxText* _tmp27_;
+ GtkSwitch* _tmp28_;
+#line 303 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp22_ = self->priv->constraint_combo;
+#line 303 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, gtk_widget_get_type (), GtkWidget), TRUE);
+#line 304 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp23_ = export_dialog_get_specified_format (self);
+#line 304 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ jpeg = _tmp23_ == PHOTO_FILE_FORMAT_JFIF;
+#line 305 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp25_ = original;
+#line 305 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (!_tmp25_) {
+#line 1768 "ExportDialog.c"
+ gboolean _tmp26_;
+#line 305 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp26_ = jpeg;
+#line 305 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp24_ = _tmp26_;
+#line 1774 "ExportDialog.c"
+ } else {
+#line 305 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp24_ = FALSE;
+#line 1778 "ExportDialog.c"
+ }
+#line 305 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp27_ = self->priv->quality_combo;
+#line 305 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, gtk_widget_get_type (), GtkWidget), _tmp24_);
+#line 306 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp28_ = self->priv->export_metadata;
+#line 306 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp28_, gtk_widget_get_type (), GtkWidget), TRUE);
+#line 1788 "ExportDialog.c"
+ }
+ }
+}
+
+
+static void export_dialog_on_activate (ExportDialog* self) {
+#line 310 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (IS_EXPORT_DIALOG (self));
+#line 311 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_dialog_response (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), (gint) GTK_RESPONSE_OK);
+#line 1799 "ExportDialog.c"
+}
+
+
+static void export_dialog_on_pixels_changed (ExportDialog* self) {
+ gboolean _tmp0_ = FALSE;
+ GtkEntry* _tmp1_;
+ guint16 _tmp2_;
+ GtkWidget* _tmp6_;
+#line 314 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (IS_EXPORT_DIALOG (self));
+#line 315 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = self->priv->pixels_entry;
+#line 315 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = gtk_entry_get_text_length (_tmp1_);
+#line 315 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (((gint) _tmp2_) > 0) {
+#line 1816 "ExportDialog.c"
+ GtkEntry* _tmp3_;
+ const gchar* _tmp4_;
+ gint _tmp5_;
+#line 315 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = self->priv->pixels_entry;
+#line 315 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp4_ = gtk_entry_get_text (_tmp3_);
+#line 315 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = atoi (_tmp4_);
+#line 315 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = _tmp5_ > 0;
+#line 1828 "ExportDialog.c"
+ } else {
+#line 315 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = FALSE;
+#line 1832 "ExportDialog.c"
+ }
+#line 315 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = self->priv->ok_button;
+#line 315 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_widget_set_sensitive (_tmp6_, _tmp0_);
+#line 1838 "ExportDialog.c"
+}
+
+
+static gchar string_get (const gchar* self, glong index) {
+ gchar result = '\0';
+ glong _tmp0_;
+ gchar _tmp1_;
+#line 1110 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ g_return_val_if_fail (self != NULL, '\0');
+#line 1111 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp0_ = index;
+#line 1111 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ _tmp1_ = ((gchar*) self)[_tmp0_];
+#line 1111 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ result = _tmp1_;
+#line 1111 "/usr/share/vala-0.36/vapi/glib-2.0.vapi"
+ return result;
+#line 1856 "ExportDialog.c"
+}
+
+
+static void export_dialog_on_pixels_insert_text (ExportDialog* self, const gchar* text, gint length, gint* position) {
+ gboolean _tmp0_;
+ gint _tmp1_;
+ gchar* new_text = NULL;
+ gchar* _tmp5_;
+ const gchar* _tmp21_;
+ gint _tmp22_;
+ gint _tmp23_;
+ GtkEntry* _tmp29_;
+#line 318 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (IS_EXPORT_DIALOG (self));
+#line 318 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_return_if_fail (text != NULL);
+#line 320 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = self->priv->in_insert;
+#line 320 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp0_) {
+#line 321 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ return;
+#line 1879 "ExportDialog.c"
+ }
+#line 323 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->in_insert = TRUE;
+#line 325 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = length;
+#line 325 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp1_ == -1) {
+#line 1887 "ExportDialog.c"
+ const gchar* _tmp2_;
+ gint _tmp3_;
+ gint _tmp4_;
+#line 326 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp2_ = text;
+#line 326 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp3_ = strlen (_tmp2_);
+#line 326 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp4_ = _tmp3_;
+#line 326 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ length = (gint) _tmp4_;
+#line 1899 "ExportDialog.c"
+ }
+#line 329 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp5_ = g_strdup ("");
+#line 329 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ new_text = _tmp5_;
+#line 1905 "ExportDialog.c"
+ {
+ gint ctr = 0;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ ctr = 0;
+#line 1910 "ExportDialog.c"
+ {
+ gboolean _tmp6_ = FALSE;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = TRUE;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ while (TRUE) {
+#line 1917 "ExportDialog.c"
+ gint _tmp8_;
+ gint _tmp9_;
+ const gchar* _tmp10_;
+ gint _tmp11_;
+ gchar _tmp12_;
+ gboolean _tmp13_;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (!_tmp6_) {
+#line 1926 "ExportDialog.c"
+ gint _tmp7_;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp7_ = ctr;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ ctr = _tmp7_ + 1;
+#line 1932 "ExportDialog.c"
+ }
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp6_ = FALSE;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp8_ = ctr;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp9_ = length;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (!(_tmp8_ < _tmp9_)) {
+#line 330 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ break;
+#line 1944 "ExportDialog.c"
+ }
+#line 331 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp10_ = text;
+#line 331 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp11_ = ctr;
+#line 331 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp12_ = string_get (_tmp10_, (glong) _tmp11_);
+#line 331 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp13_ = g_ascii_isdigit (_tmp12_);
+#line 331 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp13_) {
+#line 1956 "ExportDialog.c"
+ const gchar* _tmp14_;
+ const gchar* _tmp15_;
+ gint _tmp16_;
+ gchar _tmp17_;
+ gchar* _tmp18_;
+ gchar* _tmp19_;
+ gchar* _tmp20_;
+#line 332 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp14_ = new_text;
+#line 332 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp15_ = text;
+#line 332 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp16_ = ctr;
+#line 332 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp17_ = string_get (_tmp15_, (glong) _tmp16_);
+#line 332 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp18_ = g_strdup_printf ("%c", (gchar) _tmp17_);
+#line 332 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp19_ = _tmp18_;
+#line 332 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp20_ = g_strconcat (_tmp14_, _tmp19_, NULL);
+#line 332 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (new_text);
+#line 332 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ new_text = _tmp20_;
+#line 332 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (_tmp19_);
+#line 1984 "ExportDialog.c"
+ }
+ }
+ }
+ }
+#line 336 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp21_ = new_text;
+#line 336 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp22_ = strlen (_tmp21_);
+#line 336 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp23_ = _tmp22_;
+#line 336 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ if (_tmp23_ > 0) {
+#line 1997 "ExportDialog.c"
+ GtkEntry* _tmp24_;
+ const gchar* _tmp25_;
+ const gchar* _tmp26_;
+ gint _tmp27_;
+ gint _tmp28_;
+#line 337 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp24_ = self->priv->pixels_entry;
+#line 337 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp25_ = new_text;
+#line 337 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp26_ = new_text;
+#line 337 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp27_ = strlen (_tmp26_);
+#line 337 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp28_ = _tmp27_;
+#line 337 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ gtk_editable_insert_text (G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, GTK_TYPE_EDITABLE, GtkEditable), _tmp25_, (gint) _tmp28_, position);
+#line 2015 "ExportDialog.c"
+ }
+#line 339 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp29_ = self->priv->pixels_entry;
+#line 339 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_signal_stop_emission_by_name (_tmp29_, "insert-text");
+#line 341 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->in_insert = FALSE;
+#line 318 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_free0 (new_text);
+#line 2025 "ExportDialog.c"
+}
+
+
+static void export_dialog_class_init (ExportDialogClass * klass) {
+ ExportFormatParameters _tmp0_ = {0};
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_type_class_add_private (klass, sizeof (ExportDialogPrivate));
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ G_OBJECT_CLASS (klass)->finalize = export_dialog_finalize;
+#line 25 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_format_parameters_current (&_tmp0_);
+#line 25 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_parameters = _tmp0_;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ export_dialog_current_scale = EXPORT_DIALOG_DEFAULT_SCALE;
+#line 2043 "ExportDialog.c"
+}
+
+
+static void export_dialog_instance_init (ExportDialog * self) {
+ GtkGrid* _tmp0_;
+ GeeArrayList* _tmp1_;
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv = EXPORT_DIALOG_GET_PRIVATE (self);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp0_ = (GtkGrid*) gtk_grid_new ();
+#line 28 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ g_object_ref_sink (_tmp0_);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->table = _tmp0_;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _tmp1_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
+#line 33 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->format_options = _tmp1_;
+#line 36 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self->priv->in_insert = FALSE;
+#line 2064 "ExportDialog.c"
+}
+
+
+static void export_dialog_finalize (GObject * obj) {
+ ExportDialog * self;
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_EXPORT_DIALOG, ExportDialog);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->table);
+#line 29 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->quality_combo);
+#line 30 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->constraint_combo);
+#line 31 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->format_combo);
+#line 32 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->export_metadata);
+#line 33 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->format_options);
+#line 34 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->pixels_entry);
+#line 35 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ _g_object_unref0 (self->priv->ok_button);
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ExportDialog.vala"
+ G_OBJECT_CLASS (export_dialog_parent_class)->finalize (obj);
+#line 2090 "ExportDialog.c"
+}
+
+
+GType export_dialog_get_type (void) {
+ static volatile gsize export_dialog_type_id__volatile = 0;
+ if (g_once_init_enter (&export_dialog_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (ExportDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) export_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ExportDialog), 0, (GInstanceInitFunc) export_dialog_instance_init, NULL };
+ GType export_dialog_type_id;
+ export_dialog_type_id = g_type_register_static (gtk_dialog_get_type (), "ExportDialog", &g_define_type_info, 0);
+ g_once_init_leave (&export_dialog_type_id__volatile, export_dialog_type_id);
+ }
+ return export_dialog_type_id__volatile;
+}
+
+
+
diff --git a/src/dialogs/ExportDialog.vala b/src/dialogs/ExportDialog.vala
new file mode 100644
index 0000000..5a61dc4
--- /dev/null
+++ b/src/dialogs/ExportDialog.vala
@@ -0,0 +1,343 @@
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+public class ExportDialog : Gtk.Dialog {
+ public const int DEFAULT_SCALE = 1200;
+
+ // "Unmodified" and "Current," though they appear in the "Format:" popup menu, really
+ // aren't formats so much as they are operating modes that determine specific formats.
+ // Hereafter we'll refer to these as "special formats."
+ public const int NUM_SPECIAL_FORMATS = 2;
+ public const string UNMODIFIED_FORMAT_LABEL = _("Unmodified");
+ public const string CURRENT_FORMAT_LABEL = _("Current");
+
+ public const ScaleConstraint[] CONSTRAINT_ARRAY = { ScaleConstraint.ORIGINAL,
+ ScaleConstraint.DIMENSIONS, ScaleConstraint.WIDTH, ScaleConstraint.HEIGHT };
+
+ public const Jpeg.Quality[] QUALITY_ARRAY = { Jpeg.Quality.LOW, Jpeg.Quality.MEDIUM,
+ Jpeg.Quality.HIGH, Jpeg.Quality.MAXIMUM };
+
+ private static ScaleConstraint current_constraint = ScaleConstraint.ORIGINAL;
+ private static ExportFormatParameters current_parameters = ExportFormatParameters.current();
+ private static int current_scale = DEFAULT_SCALE;
+
+ private Gtk.Grid table = new Gtk.Grid();
+ private Gtk.ComboBoxText quality_combo;
+ private Gtk.ComboBoxText constraint_combo;
+ private Gtk.ComboBoxText format_combo;
+ private Gtk.Switch export_metadata;
+ private Gee.ArrayList<string> format_options = new Gee.ArrayList<string>();
+ private Gtk.Entry pixels_entry;
+ private Gtk.Widget ok_button;
+ private bool in_insert = false;
+
+ public ExportDialog(string title) {
+ Object (use_header_bar: Resources.use_header_bar());
+
+ this.title = title;
+ resizable = false;
+
+ //get information about the export settings out of our config backend
+ Config.Facade config = Config.Facade.get_instance();
+ current_parameters.mode = config.get_export_export_format_mode(); //ExportFormatMode
+ current_parameters.specified_format = config.get_export_photo_file_format(); //PhotoFileFormat
+ current_parameters.quality = config.get_export_quality(); //quality
+ current_parameters.export_metadata = config.get_export_export_metadata(); //export metadata
+ current_constraint = config.get_export_constraint(); //constraint
+ current_scale = config.get_export_scale(); //scale
+
+ quality_combo = new Gtk.ComboBoxText();
+ int ctr = 0;
+ foreach (Jpeg.Quality quality in QUALITY_ARRAY) {
+ quality_combo.append_text(quality.to_string());
+ if (quality == current_parameters.quality)
+ quality_combo.set_active(ctr);
+ ctr++;
+ }
+
+ constraint_combo = new Gtk.ComboBoxText();
+ ctr = 0;
+ foreach (ScaleConstraint constraint in CONSTRAINT_ARRAY) {
+ constraint_combo.append_text(constraint.to_string());
+ if (constraint == current_constraint)
+ constraint_combo.set_active(ctr);
+ ctr++;
+ }
+
+ format_combo = new Gtk.ComboBoxText();
+ format_add_option(UNMODIFIED_FORMAT_LABEL);
+ format_add_option(CURRENT_FORMAT_LABEL);
+ foreach (PhotoFileFormat format in PhotoFileFormat.get_writeable()) {
+ format_add_option(format.get_properties().get_user_visible_name());
+ }
+
+ pixels_entry = new Gtk.Entry();
+ pixels_entry.set_max_length(6);
+ pixels_entry.set_text("%d".printf(current_scale));
+
+ // register after preparation to avoid signals during init
+ constraint_combo.changed.connect(on_constraint_changed);
+ format_combo.changed.connect(on_format_changed);
+ pixels_entry.changed.connect(on_pixels_changed);
+ pixels_entry.insert_text.connect(on_pixels_insert_text);
+ pixels_entry.activate.connect(on_activate);
+
+ // layout controls
+ add_label(_("_Format:"), 0, 0, format_combo);
+ add_control(format_combo, 1, 0);
+
+ add_label(_("_Quality:"), 0, 1, quality_combo);
+ add_control(quality_combo, 1, 1);
+
+ add_label(_("_Scaling constraint:"), 0, 2, constraint_combo);
+ add_control(constraint_combo, 1, 2);
+
+ add_label(_("_Pixels:"), 0, 3, pixels_entry);
+ add_control(pixels_entry, 1, 3);
+
+ export_metadata = new Gtk.Switch ();
+ add_label(_("Export _metadata:"), 0, 4, export_metadata);
+ add_control(export_metadata, 1, 4);
+ export_metadata.active = true;
+ export_metadata.halign = Gtk.Align.START;
+
+ table.set_row_spacing(6);
+ table.set_column_spacing(12);
+ table.set_border_width(18);
+
+ ((Gtk.Box) get_content_area()).add(table);
+
+ // add buttons to action area
+ add_button(Resources.CANCEL_LABEL, Gtk.ResponseType.CANCEL);
+ ok_button = add_button(Resources.OK_LABEL, Gtk.ResponseType.OK);
+ set_default_response(Gtk.ResponseType.OK);
+
+ ok_button.set_can_default(true);
+ ok_button.has_default = true;
+ set_default(ok_button);
+
+ if (current_constraint == ScaleConstraint.ORIGINAL) {
+ pixels_entry.sensitive = false;
+ quality_combo.sensitive = false;
+ }
+
+ ok_button.grab_focus();
+ }
+
+ private void format_add_option(string format_name) {
+ format_options.add(format_name);
+ format_combo.append_text(format_name);
+ }
+
+ private void format_set_active_text(string text) {
+ int selection_ticker = 0;
+
+ foreach (string current_text in format_options) {
+ if (current_text == text) {
+ format_combo.set_active(selection_ticker);
+ return;
+ }
+ selection_ticker++;
+ }
+
+ error("format_set_active_text: text '%s' isn't in combo box", text);
+ }
+
+ private PhotoFileFormat get_specified_format() {
+ int index = format_combo.get_active();
+ if (index < NUM_SPECIAL_FORMATS)
+ index = NUM_SPECIAL_FORMATS;
+
+ index -= NUM_SPECIAL_FORMATS;
+ PhotoFileFormat[] writeable_formats = PhotoFileFormat.get_writeable();
+ return writeable_formats[index];
+ }
+
+ private string get_label_for_parameters(ExportFormatParameters params) {
+ switch(params.mode) {
+ case ExportFormatMode.UNMODIFIED:
+ return UNMODIFIED_FORMAT_LABEL;
+
+ case ExportFormatMode.CURRENT:
+ return CURRENT_FORMAT_LABEL;
+
+ case ExportFormatMode.SPECIFIED:
+ return params.specified_format.get_properties().get_user_visible_name();
+
+ default:
+ error("get_label_for_parameters: unrecognized export format mode");
+ }
+ }
+
+ // unlike other parameters, which should be persisted across dialog executions, the
+ // format parameters must be set each time the dialog is executed -- this is why
+ // it's passed qualified as ref and not as out
+ public bool execute(out int scale, out ScaleConstraint constraint,
+ ref ExportFormatParameters parameters) {
+ show_all();
+
+ // if the export format mode isn't set to last (i.e., don't use the persisted settings),
+ // reset the scale constraint to original size
+ if (parameters.mode != ExportFormatMode.LAST) {
+ current_constraint = constraint = ScaleConstraint.ORIGINAL;
+ constraint_combo.set_active(0);
+ }
+
+ if (parameters.mode == ExportFormatMode.LAST)
+ parameters = current_parameters;
+ else if (parameters.mode == ExportFormatMode.SPECIFIED && !parameters.specified_format.can_write())
+ parameters.specified_format = PhotoFileFormat.get_system_default_format();
+
+ format_set_active_text(get_label_for_parameters(parameters));
+ on_format_changed();
+
+ bool ok = (run() == Gtk.ResponseType.OK);
+ if (ok) {
+ int index = constraint_combo.get_active();
+ assert(index >= 0);
+ constraint = CONSTRAINT_ARRAY[index];
+ current_constraint = constraint;
+
+ scale = int.parse(pixels_entry.get_text());
+ if (constraint != ScaleConstraint.ORIGINAL)
+ assert(scale > 0);
+ current_scale = scale;
+
+ parameters.export_metadata = export_metadata.sensitive ? export_metadata.active : false;
+
+ if (format_combo.get_active_text() == UNMODIFIED_FORMAT_LABEL) {
+ parameters.mode = current_parameters.mode = ExportFormatMode.UNMODIFIED;
+ } else if (format_combo.get_active_text() == CURRENT_FORMAT_LABEL) {
+ parameters.mode = current_parameters.mode = ExportFormatMode.CURRENT;
+ } else {
+ parameters.mode = current_parameters.mode = ExportFormatMode.SPECIFIED;
+ parameters.specified_format = current_parameters.specified_format = get_specified_format();
+ if (current_parameters.specified_format == PhotoFileFormat.JFIF)
+ parameters.quality = current_parameters.quality = QUALITY_ARRAY[quality_combo.get_active()];
+ }
+
+ //save current settings in config backend for reusing later
+ Config.Facade config = Config.Facade.get_instance();
+ config.set_export_export_format_mode(current_parameters.mode); //ExportFormatMode
+ config.set_export_photo_file_format(current_parameters.specified_format); //PhotoFileFormat
+ config.set_export_quality(current_parameters.quality); //quality
+ config.set_export_export_metadata(current_parameters.export_metadata); //export metadata
+ config.set_export_constraint(current_constraint); //constraint
+ config.set_export_scale(current_scale); //scale
+ } else {
+ scale = 0;
+ constraint = ScaleConstraint.ORIGINAL;
+ }
+
+ destroy();
+
+ return ok;
+ }
+
+ private void add_label(string text, int x, int y, Gtk.Widget? widget = null) {
+ Gtk.Label new_label = new Gtk.Label.with_mnemonic(text);
+ new_label.halign = Gtk.Align.END;
+ new_label.valign = Gtk.Align.CENTER;
+ new_label.set_use_underline(true);
+
+ if (widget != null)
+ new_label.set_mnemonic_widget(widget);
+
+ table.attach(new_label, x, y, 1, 1);
+ }
+
+ private void add_control(Gtk.Widget widget, int x, int y) {
+ widget.halign = Gtk.Align.FILL;
+ widget.valign = Gtk.Align.CENTER;
+ widget.hexpand = true;
+ widget.vexpand = true;
+
+ table.attach(widget, x, y, 1, 1);
+ }
+
+ private void on_constraint_changed() {
+ bool original = CONSTRAINT_ARRAY[constraint_combo.get_active()] == ScaleConstraint.ORIGINAL;
+ bool jpeg = format_combo.get_active_text() ==
+ PhotoFileFormat.JFIF.get_properties().get_user_visible_name();
+ pixels_entry.sensitive = !original;
+ quality_combo.sensitive = !original && jpeg;
+ if (original)
+ ok_button.sensitive = true;
+ else
+ on_pixels_changed();
+ }
+
+ private void on_format_changed() {
+ bool original = CONSTRAINT_ARRAY[constraint_combo.get_active()] == ScaleConstraint.ORIGINAL;
+
+ if (format_combo.get_active_text() == UNMODIFIED_FORMAT_LABEL) {
+ // if the user wishes to export the media unmodified, then we just copy the original
+ // files, so parameterizing size, quality, etc. is impossible -- these are all
+ // just as they are in the original file. In this case, we set the scale constraint to
+ // original and lock out all the controls
+ constraint_combo.set_active(0); /* 0 == original size */
+ constraint_combo.set_sensitive(false);
+ quality_combo.set_sensitive(false);
+ pixels_entry.sensitive = false;
+ export_metadata.active = false;
+ export_metadata.sensitive = false;
+ } else if (format_combo.get_active_text() == CURRENT_FORMAT_LABEL) {
+ // if the user wishes to export the media in its current format, we allow sizing but
+ // not JPEG quality customization, because in a batch of many photos, it's not
+ // guaranteed that all of them will be JPEGs or RAWs that get converted to JPEGs. Some
+ // could be PNGs, and PNG has no notion of quality. So lock out the quality control.
+ // If the user wants to set JPEG quality, he or she can explicitly specify the JPEG
+ // format.
+ constraint_combo.set_sensitive(true);
+ quality_combo.set_sensitive(false);
+ pixels_entry.sensitive = !original;
+ export_metadata.sensitive = true;
+ } else {
+ // if the user has chosen a specific format, then allow JPEG quality customization if
+ // the format is JPEG and the user is re-sizing the image, otherwise, disallow JPEG
+ // quality customization; always allow scaling.
+ constraint_combo.set_sensitive(true);
+ bool jpeg = get_specified_format() == PhotoFileFormat.JFIF;
+ quality_combo.sensitive = !original && jpeg;
+ export_metadata.sensitive = true;
+ }
+ }
+
+ private void on_activate() {
+ response(Gtk.ResponseType.OK);
+ }
+
+ private void on_pixels_changed() {
+ ok_button.sensitive = (pixels_entry.get_text_length() > 0) && (int.parse(pixels_entry.get_text()) > 0);
+ }
+
+ private void on_pixels_insert_text(string text, int length, ref int position) {
+ // This is necessary because SignalHandler.block_by_func() is not properly bound
+ if (in_insert)
+ return;
+
+ in_insert = true;
+
+ if (length == -1)
+ length = (int) text.length;
+
+ // only permit numeric text
+ string new_text = "";
+ for (int ctr = 0; ctr < length; ctr++) {
+ if (text[ctr].isdigit()) {
+ new_text += ((char) text[ctr]).to_string();
+ }
+ }
+
+ if (new_text.length > 0)
+ pixels_entry.insert_text(new_text, (int) new_text.length, ref position);
+
+ Signal.stop_emission_by_name(pixels_entry, "insert-text");
+
+ in_insert = false;
+ }
+}
diff --git a/src/dialogs/MultiTextEntryDialog.c b/src/dialogs/MultiTextEntryDialog.c
new file mode 100644
index 0000000..7e682a6
--- /dev/null
+++ b/src/dialogs/MultiTextEntryDialog.c
@@ -0,0 +1,286 @@
+/* MultiTextEntryDialog.c generated by valac 0.36.6, the Vala compiler
+ * generated from MultiTextEntryDialog.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+#define TYPE_MULTI_TEXT_ENTRY_DIALOG (multi_text_entry_dialog_get_type ())
+#define MULTI_TEXT_ENTRY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MULTI_TEXT_ENTRY_DIALOG, MultiTextEntryDialog))
+#define MULTI_TEXT_ENTRY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MULTI_TEXT_ENTRY_DIALOG, MultiTextEntryDialogClass))
+#define IS_MULTI_TEXT_ENTRY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MULTI_TEXT_ENTRY_DIALOG))
+#define IS_MULTI_TEXT_ENTRY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MULTI_TEXT_ENTRY_DIALOG))
+#define MULTI_TEXT_ENTRY_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MULTI_TEXT_ENTRY_DIALOG, MultiTextEntryDialogClass))
+
+typedef struct _MultiTextEntryDialog MultiTextEntryDialog;
+typedef struct _MultiTextEntryDialogClass MultiTextEntryDialogClass;
+typedef struct _MultiTextEntryDialogPrivate MultiTextEntryDialogPrivate;
+#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 _g_free0(var) (var = (g_free (var), NULL))
+
+struct _MultiTextEntryDialog {
+ GtkDialog parent_instance;
+ MultiTextEntryDialogPrivate * priv;
+};
+
+struct _MultiTextEntryDialogClass {
+ GtkDialogClass parent_class;
+};
+
+typedef gboolean (*MultiTextEntryDialogOnModifyValidateType) (const gchar* text, void* user_data);
+struct _MultiTextEntryDialogPrivate {
+ MultiTextEntryDialogOnModifyValidateType on_modify_validate;
+ gpointer on_modify_validate_target;
+ GtkTextView* entry;
+};
+
+
+static gpointer multi_text_entry_dialog_parent_class = NULL;
+
+GType multi_text_entry_dialog_get_type (void) G_GNUC_CONST;
+#define MULTI_TEXT_ENTRY_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MULTI_TEXT_ENTRY_DIALOG, MultiTextEntryDialogPrivate))
+enum {
+ MULTI_TEXT_ENTRY_DIALOG_DUMMY_PROPERTY
+};
+MultiTextEntryDialog* multi_text_entry_dialog_new (void);
+MultiTextEntryDialog* multi_text_entry_dialog_construct (GType object_type);
+gint resources_use_header_bar (void);
+void multi_text_entry_dialog_setup (MultiTextEntryDialog* self, MultiTextEntryDialogOnModifyValidateType modify_validate, void* modify_validate_target, const gchar* title, const gchar* label, const gchar* initial_text);
+GType page_window_get_type (void) G_GNUC_CONST;
+GType app_window_get_type (void) G_GNUC_CONST;
+AppWindow* app_window_get_instance (void);
+gchar* multi_text_entry_dialog_execute (MultiTextEntryDialog* self);
+static void multi_text_entry_dialog_finalize (GObject * obj);
+
+
+MultiTextEntryDialog* multi_text_entry_dialog_construct (GType object_type) {
+ MultiTextEntryDialog * self = NULL;
+ gint _tmp0_;
+#line 17 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp0_ = resources_use_header_bar ();
+#line 17 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ self = (MultiTextEntryDialog*) g_object_new (object_type, "use-header-bar", _tmp0_, NULL);
+#line 16 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ return self;
+#line 96 "MultiTextEntryDialog.c"
+}
+
+
+MultiTextEntryDialog* multi_text_entry_dialog_new (void) {
+#line 16 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ return multi_text_entry_dialog_construct (TYPE_MULTI_TEXT_ENTRY_DIALOG);
+#line 103 "MultiTextEntryDialog.c"
+}
+
+
+void multi_text_entry_dialog_setup (MultiTextEntryDialog* self, MultiTextEntryDialogOnModifyValidateType modify_validate, void* modify_validate_target, const gchar* title, const gchar* label, const gchar* initial_text) {
+ const gchar* _tmp0_;
+ AppWindow* _tmp1_;
+ AppWindow* _tmp2_;
+ GdkWindow* _tmp3_;
+ AppWindow* _tmp4_;
+ AppWindow* _tmp5_;
+ MultiTextEntryDialogOnModifyValidateType _tmp6_;
+ void* _tmp6__target;
+ const gchar* _tmp7_ = NULL;
+ const gchar* _tmp8_;
+ GtkTextView* _tmp10_;
+ GtkTextBuffer* _tmp11_;
+ GtkTextBuffer* _tmp12_;
+ GtkTextView* _tmp13_;
+#line 20 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ g_return_if_fail (IS_MULTI_TEXT_ENTRY_DIALOG (self));
+#line 20 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ g_return_if_fail (title != NULL);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ g_return_if_fail (label != NULL);
+#line 21 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp0_ = title;
+#line 21 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ gtk_window_set_title (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), _tmp0_);
+#line 22 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp1_ = app_window_get_instance ();
+#line 22 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp2_ = _tmp1_;
+#line 22 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp3_ = gtk_widget_get_parent_window (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_widget_get_type (), GtkWidget));
+#line 22 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ gtk_widget_set_parent_window (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), _tmp3_);
+#line 22 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _g_object_unref0 (_tmp2_);
+#line 23 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp4_ = app_window_get_instance ();
+#line 23 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp5_ = _tmp4_;
+#line 23 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ gtk_window_set_transient_for (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_window_get_type (), GtkWindow));
+#line 23 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _g_object_unref0 (_tmp5_);
+#line 24 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp6_ = modify_validate;
+#line 24 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp6__target = modify_validate_target;
+#line 24 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ self->priv->on_modify_validate = _tmp6_;
+#line 24 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ self->priv->on_modify_validate_target = _tmp6__target;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp8_ = initial_text;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ if (_tmp8_ != NULL) {
+#line 162 "MultiTextEntryDialog.c"
+ const gchar* _tmp9_;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp9_ = initial_text;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp7_ = _tmp9_;
+#line 168 "MultiTextEntryDialog.c"
+ } else {
+#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp7_ = "";
+#line 172 "MultiTextEntryDialog.c"
+ }
+#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp10_ = self->priv->entry;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp11_ = gtk_text_view_get_buffer (_tmp10_);
+#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp12_ = _tmp11_;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ g_object_set (_tmp12_, "text", _tmp7_, NULL);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp13_ = self->priv->entry;
+#line 28 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ gtk_widget_grab_focus (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, gtk_widget_get_type (), GtkWidget));
+#line 186 "MultiTextEntryDialog.c"
+}
+
+
+gchar* multi_text_entry_dialog_execute (MultiTextEntryDialog* self) {
+ gchar* result = NULL;
+ gchar* text = NULL;
+ gint _tmp0_;
+#line 31 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ g_return_val_if_fail (IS_MULTI_TEXT_ENTRY_DIALOG (self), NULL);
+#line 32 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ text = NULL;
+#line 34 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 36 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp0_ = gtk_dialog_run (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog));
+#line 36 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ if (_tmp0_ == ((gint) GTK_RESPONSE_OK)) {
+#line 204 "MultiTextEntryDialog.c"
+ GtkTextView* _tmp1_;
+ GtkTextBuffer* _tmp2_;
+ GtkTextBuffer* _tmp3_;
+ gchar* _tmp4_;
+ gchar* _tmp5_;
+#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp1_ = self->priv->entry;
+#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp2_ = gtk_text_view_get_buffer (_tmp1_);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp3_ = _tmp2_;
+#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ g_object_get (_tmp3_, "text", &_tmp4_, NULL);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _tmp5_ = _tmp4_;
+#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _g_free0 (text);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ text = _tmp5_;
+#line 224 "MultiTextEntryDialog.c"
+ }
+#line 39 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ gtk_widget_destroy (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 41 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ result = text;
+#line 41 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ return result;
+#line 232 "MultiTextEntryDialog.c"
+}
+
+
+static void multi_text_entry_dialog_class_init (MultiTextEntryDialogClass * klass) {
+ gint MultiTextEntryDialog_private_offset;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ multi_text_entry_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ g_type_class_add_private (klass, sizeof (MultiTextEntryDialogPrivate));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ G_OBJECT_CLASS (klass)->finalize = multi_text_entry_dialog_finalize;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ MultiTextEntryDialog_private_offset = g_type_class_get_instance_private_offset (klass);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/Shotwell/ui/multitextentrydialog.ui");
+#line 9 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "entry", FALSE, MultiTextEntryDialog_private_offset + G_STRUCT_OFFSET (MultiTextEntryDialogPrivate, entry));
+#line 250 "MultiTextEntryDialog.c"
+}
+
+
+static void multi_text_entry_dialog_instance_init (MultiTextEntryDialog * self) {
+#line 9 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ self->priv = MULTI_TEXT_ENTRY_DIALOG_GET_PRIVATE (self);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ gtk_widget_init_template (GTK_WIDGET (self));
+#line 259 "MultiTextEntryDialog.c"
+}
+
+
+static void multi_text_entry_dialog_finalize (GObject * obj) {
+ MultiTextEntryDialog * self;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MULTI_TEXT_ENTRY_DIALOG, MultiTextEntryDialog);
+#line 14 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ _g_object_unref0 (self->priv->entry);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
+ G_OBJECT_CLASS (multi_text_entry_dialog_parent_class)->finalize (obj);
+#line 271 "MultiTextEntryDialog.c"
+}
+
+
+GType multi_text_entry_dialog_get_type (void) {
+ static volatile gsize multi_text_entry_dialog_type_id__volatile = 0;
+ if (g_once_init_enter (&multi_text_entry_dialog_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (MultiTextEntryDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) multi_text_entry_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MultiTextEntryDialog), 0, (GInstanceInitFunc) multi_text_entry_dialog_instance_init, NULL };
+ GType multi_text_entry_dialog_type_id;
+ multi_text_entry_dialog_type_id = g_type_register_static (gtk_dialog_get_type (), "MultiTextEntryDialog", &g_define_type_info, 0);
+ g_once_init_leave (&multi_text_entry_dialog_type_id__volatile, multi_text_entry_dialog_type_id);
+ }
+ return multi_text_entry_dialog_type_id__volatile;
+}
+
+
+
diff --git a/src/dialogs/MultiTextEntryDialog.vala b/src/dialogs/MultiTextEntryDialog.vala
new file mode 100644
index 0000000..42e5318
--- /dev/null
+++ b/src/dialogs/MultiTextEntryDialog.vala
@@ -0,0 +1,43 @@
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+[GtkTemplate (ui = "/org/gnome/Shotwell/ui/multitextentrydialog.ui")]
+public class MultiTextEntryDialog : Gtk.Dialog {
+ public delegate bool OnModifyValidateType(string text);
+
+ private unowned OnModifyValidateType on_modify_validate;
+ [GtkChild]
+ private Gtk.TextView entry;
+
+ public MultiTextEntryDialog() {
+ Object (use_header_bar: Resources.use_header_bar());
+ }
+
+ public void setup(OnModifyValidateType? modify_validate, string title, string label, string? initial_text) {
+ set_title(title);
+ set_parent_window(AppWindow.get_instance().get_parent_window());
+ set_transient_for(AppWindow.get_instance());
+ on_modify_validate = modify_validate;
+
+ entry.buffer.text = (initial_text != null ? initial_text : "");
+
+ entry.grab_focus();
+ }
+
+ public string? execute() {
+ string? text = null;
+
+ show_all();
+
+ if (run() == Gtk.ResponseType.OK)
+ text = entry.buffer.text;
+
+ destroy();
+
+ return text;
+ }
+}
diff --git a/src/dialogs/Preferences.c b/src/dialogs/Preferences.c
new file mode 100644
index 0000000..855b11d
--- /dev/null
+++ b/src/dialogs/Preferences.c
@@ -0,0 +1,3245 @@
+/* Preferences.c generated by valac 0.36.6, the Vala compiler
+ * generated from Preferences.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <gio/gio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+#include <gdk/gdk.h>
+#include <float.h>
+#include <math.h>
+#include <glib/gi18n-lib.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <gobject/gvaluecollector.h>
+
+
+#define TYPE_PREFERENCES_DIALOG (preferences_dialog_get_type ())
+#define PREFERENCES_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PREFERENCES_DIALOG, PreferencesDialog))
+#define PREFERENCES_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PREFERENCES_DIALOG, PreferencesDialogClass))
+#define IS_PREFERENCES_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PREFERENCES_DIALOG))
+#define IS_PREFERENCES_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PREFERENCES_DIALOG))
+#define PREFERENCES_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PREFERENCES_DIALOG, PreferencesDialogClass))
+
+typedef struct _PreferencesDialog PreferencesDialog;
+typedef struct _PreferencesDialogClass PreferencesDialogClass;
+typedef struct _PreferencesDialogPrivate PreferencesDialogPrivate;
+
+#define TYPE_SORTED_LIST (sorted_list_get_type ())
+#define SORTED_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SORTED_LIST, SortedList))
+#define SORTED_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SORTED_LIST, SortedListClass))
+#define IS_SORTED_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SORTED_LIST))
+#define IS_SORTED_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SORTED_LIST))
+#define SORTED_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SORTED_LIST, SortedListClass))
+
+typedef struct _SortedList SortedList;
+typedef struct _SortedListClass SortedListClass;
+
+#define PREFERENCES_DIALOG_TYPE_PATH_FORMAT (preferences_dialog_path_format_get_type ())
+#define PREFERENCES_DIALOG_PATH_FORMAT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PREFERENCES_DIALOG_TYPE_PATH_FORMAT, PreferencesDialogPathFormat))
+#define PREFERENCES_DIALOG_PATH_FORMAT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PREFERENCES_DIALOG_TYPE_PATH_FORMAT, PreferencesDialogPathFormatClass))
+#define PREFERENCES_DIALOG_IS_PATH_FORMAT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PREFERENCES_DIALOG_TYPE_PATH_FORMAT))
+#define PREFERENCES_DIALOG_IS_PATH_FORMAT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PREFERENCES_DIALOG_TYPE_PATH_FORMAT))
+#define PREFERENCES_DIALOG_PATH_FORMAT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PREFERENCES_DIALOG_TYPE_PATH_FORMAT, PreferencesDialogPathFormatClass))
+
+typedef struct _PreferencesDialogPathFormat PreferencesDialogPathFormat;
+typedef struct _PreferencesDialogPathFormatClass PreferencesDialogPathFormatClass;
+
+#define PLUGINS_TYPE_MANIFEST_WIDGET_MEDIATOR (plugins_manifest_widget_mediator_get_type ())
+#define PLUGINS_MANIFEST_WIDGET_MEDIATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PLUGINS_TYPE_MANIFEST_WIDGET_MEDIATOR, PluginsManifestWidgetMediator))
+#define PLUGINS_MANIFEST_WIDGET_MEDIATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PLUGINS_TYPE_MANIFEST_WIDGET_MEDIATOR, PluginsManifestWidgetMediatorClass))
+#define PLUGINS_IS_MANIFEST_WIDGET_MEDIATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PLUGINS_TYPE_MANIFEST_WIDGET_MEDIATOR))
+#define PLUGINS_IS_MANIFEST_WIDGET_MEDIATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PLUGINS_TYPE_MANIFEST_WIDGET_MEDIATOR))
+#define PLUGINS_MANIFEST_WIDGET_MEDIATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PLUGINS_TYPE_MANIFEST_WIDGET_MEDIATOR, PluginsManifestWidgetMediatorClass))
+
+typedef struct _PluginsManifestWidgetMediator PluginsManifestWidgetMediator;
+typedef struct _PluginsManifestWidgetMediatorClass PluginsManifestWidgetMediatorClass;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_date_time_unref0(var) ((var == NULL) ? NULL : (var = (g_date_time_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_CONFIGURATION_FACADE (configuration_facade_get_type ())
+#define CONFIGURATION_FACADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CONFIGURATION_FACADE, ConfigurationFacade))
+#define CONFIGURATION_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CONFIGURATION_FACADE, ConfigurationFacadeClass))
+#define IS_CONFIGURATION_FACADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CONFIGURATION_FACADE))
+#define IS_CONFIGURATION_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CONFIGURATION_FACADE))
+#define CONFIGURATION_FACADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CONFIGURATION_FACADE, ConfigurationFacadeClass))
+
+typedef struct _ConfigurationFacade ConfigurationFacade;
+typedef struct _ConfigurationFacadeClass ConfigurationFacadeClass;
+
+#define CONFIG_TYPE_FACADE (config_facade_get_type ())
+#define CONFIG_FACADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONFIG_TYPE_FACADE, ConfigFacade))
+#define CONFIG_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONFIG_TYPE_FACADE, ConfigFacadeClass))
+#define CONFIG_IS_FACADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONFIG_TYPE_FACADE))
+#define CONFIG_IS_FACADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONFIG_TYPE_FACADE))
+#define CONFIG_FACADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONFIG_TYPE_FACADE, ConfigFacadeClass))
+
+typedef struct _ConfigFacade ConfigFacade;
+typedef struct _ConfigFacadeClass ConfigFacadeClass;
+
+#define TYPE_RAW_DEVELOPER (raw_developer_get_type ())
+
+#define TYPE_PHOTO_FILE_FORMAT (photo_file_format_get_type ())
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+typedef struct _PreferencesDialogPathFormatPrivate PreferencesDialogPathFormatPrivate;
+#define _preferences_dialog_path_format_unref0(var) ((var == NULL) ? NULL : (var = (preferences_dialog_path_format_unref (var), NULL)))
+typedef struct _PreferencesDialogParamSpecPathFormat PreferencesDialogParamSpecPathFormat;
+#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 _PreferencesDialog {
+ GtkDialog parent_instance;
+ PreferencesDialogPrivate * priv;
+};
+
+struct _PreferencesDialogClass {
+ GtkDialogClass parent_class;
+};
+
+struct _PreferencesDialogPrivate {
+ GtkAdjustment* bg_color_adjustment;
+ GtkScale* bg_color_slider;
+ GtkComboBox* photo_editor_combo;
+ GtkComboBox* raw_editor_combo;
+ SortedList* external_raw_apps;
+ SortedList* external_photo_apps;
+ GtkFileChooserButton* library_dir_button;
+ GtkComboBoxText* dir_pattern_combo;
+ GtkEntry* dir_pattern_entry;
+ GtkLabel* dir_pattern_example;
+ gboolean allow_closing;
+ gchar* lib_dir;
+ GeeArrayList* path_formats;
+ GDateTime* example_date;
+ GtkCheckButton* lowercase;
+ PluginsManifestWidgetMediator* plugins_mediator;
+ GtkComboBoxText* default_raw_developer_combo;
+ GtkCheckButton* autoimport;
+ GtkCheckButton* write_metadata;
+ GtkLabel* pattern_help;
+ GtkNotebook* preferences_notebook;
+ GtkRadioButton* transparent_checker_radio;
+ GtkRadioButton* transparent_solid_radio;
+ GtkColorButton* transparent_solid_color;
+ GtkRadioButton* transparent_none_radio;
+};
+
+typedef enum {
+ RAW_DEVELOPER_SHOTWELL = 0,
+ RAW_DEVELOPER_CAMERA,
+ RAW_DEVELOPER_EMBEDDED
+} RawDeveloper;
+
+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 _PreferencesDialogPathFormat {
+ GTypeInstance parent_instance;
+ volatile int ref_count;
+ PreferencesDialogPathFormatPrivate * priv;
+ gchar* name;
+ gchar* pattern;
+};
+
+struct _PreferencesDialogPathFormatClass {
+ GTypeClass parent_class;
+ void (*finalize) (PreferencesDialogPathFormat *self);
+};
+
+struct _PreferencesDialogParamSpecPathFormat {
+ GParamSpec parent_instance;
+};
+
+
+static gpointer preferences_dialog_parent_class = NULL;
+static PreferencesDialog* preferences_dialog_preferences_dialog;
+static PreferencesDialog* preferences_dialog_preferences_dialog = NULL;
+static gpointer preferences_dialog_path_format_parent_class = NULL;
+
+GType preferences_dialog_get_type (void) G_GNUC_CONST;
+GType sorted_list_get_type (void) G_GNUC_CONST;
+static gpointer preferences_dialog_path_format_ref (gpointer instance);
+static void preferences_dialog_path_format_unref (gpointer instance);
+static GParamSpec* preferences_dialog_param_spec_path_format (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) G_GNUC_UNUSED;
+static void preferences_dialog_value_set_path_format (GValue* value, gpointer v_object) G_GNUC_UNUSED;
+static void preferences_dialog_value_take_path_format (GValue* value, gpointer v_object) G_GNUC_UNUSED;
+static gpointer preferences_dialog_value_get_path_format (const GValue* value) G_GNUC_UNUSED;
+static GType preferences_dialog_path_format_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
+GType plugins_manifest_widget_mediator_get_type (void) G_GNUC_CONST;
+#define PREFERENCES_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PREFERENCES_DIALOG, PreferencesDialogPrivate))
+enum {
+ PREFERENCES_DIALOG_DUMMY_PROPERTY
+};
+PluginsManifestWidgetMediator* plugins_manifest_widget_mediator_new (void);
+PluginsManifestWidgetMediator* plugins_manifest_widget_mediator_construct (GType object_type);
+static PreferencesDialog* preferences_dialog_new (void);
+static PreferencesDialog* preferences_dialog_construct (GType object_type);
+gint resources_use_header_bar (void);
+GType page_window_get_type (void) G_GNUC_CONST;
+GType app_window_get_type (void) G_GNUC_CONST;
+AppWindow* app_window_get_instance (void);
+static gboolean preferences_dialog_on_delete (PreferencesDialog* self);
+static gboolean _preferences_dialog_on_delete_gtk_widget_delete_event (GtkWidget* _sender, GdkEventAny* event, gpointer self);
+static void preferences_dialog_on_close (PreferencesDialog* self);
+static void _preferences_dialog_on_close_gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self);
+GType configuration_facade_get_type (void) G_GNUC_CONST;
+GType config_facade_get_type (void) G_GNUC_CONST;
+ConfigFacade* config_facade_get_instance (void);
+void config_facade_get_bg_color (ConfigFacade* self, GdkRGBA* result);
+static void preferences_dialog_on_value_changed (PreferencesDialog* self);
+static void _preferences_dialog_on_value_changed_gtk_adjustment_value_changed (GtkAdjustment* _sender, gpointer self);
+static gboolean preferences_dialog_on_bg_color_reset (PreferencesDialog* self, GdkEventButton* event);
+static gboolean _preferences_dialog_on_bg_color_reset_gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
+static void preferences_dialog_on_radio_changed (PreferencesDialog* self);
+static void _preferences_dialog_on_radio_changed_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self);
+gchar* configuration_facade_get_transparent_background_color (ConfigurationFacade* self);
+static void preferences_dialog_on_color_changed (PreferencesDialog* self);
+static void _preferences_dialog_on_color_changed_gtk_color_button_color_set (GtkColorButton* _sender, gpointer self);
+gchar* configuration_facade_get_transparent_background_type (ConfigurationFacade* self);
+gchar* resources_get_help_path (void);
+#define RESOURCES_DIR_PATTERN_URI_SYSWIDE "help:shotwell/other-files"
+static gboolean preferences_dialog_on_local_pattern_help (PreferencesDialog* self, const gchar* ignore);
+static gboolean _preferences_dialog_on_local_pattern_help_gtk_label_activate_link (GtkLabel* _sender, const gchar* uri, gpointer self);
+static void preferences_dialog_add_to_dir_formats (PreferencesDialog* self, const gchar* name, const gchar* pattern);
+static void preferences_dialog_on_dir_pattern_combo_changed (PreferencesDialog* self);
+static void _preferences_dialog_on_dir_pattern_combo_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self);
+static void preferences_dialog_on_dir_pattern_entry_changed (PreferencesDialog* self);
+static void _preferences_dialog_on_dir_pattern_entry_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self);
+static void preferences_dialog_on_lowercase_toggled (PreferencesDialog* self);
+static void _preferences_dialog_on_lowercase_toggled_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self);
+void preferences_dialog_populate_preference_options (PreferencesDialog* self);
+static void preferences_dialog_on_photo_editor_changed (PreferencesDialog* self);
+static void _preferences_dialog_on_photo_editor_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self);
+static void preferences_dialog_on_raw_editor_changed (PreferencesDialog* self);
+static void _preferences_dialog_on_raw_editor_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self);
+gboolean configuration_facade_get_auto_import_from_library (ConfigurationFacade* self);
+gboolean configuration_facade_get_commit_metadata_to_masters (ConfigurationFacade* self);
+GType raw_developer_get_type (void) G_GNUC_CONST;
+gchar* raw_developer_get_label (RawDeveloper self);
+static void preferences_dialog_set_raw_developer_combo (PreferencesDialog* self, RawDeveloper d);
+RawDeveloper configuration_facade_get_default_raw_developer (ConfigurationFacade* self);
+static void preferences_dialog_on_default_raw_developer_changed (PreferencesDialog* self);
+static void _preferences_dialog_on_default_raw_developer_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self);
+static void preferences_dialog_populate_app_combo_box (PreferencesDialog* self, GtkComboBox* combo_box, gchar** mime_types, int mime_types_length1, const gchar* current_app_executable, SortedList* * external_apps);
+gchar** photo_file_format_get_editable_mime_types (int* result_length1);
+gchar* configuration_facade_get_external_photo_app (ConfigurationFacade* self);
+GType photo_file_format_get_type (void) G_GNUC_CONST;
+gchar** photo_file_format_get_mime_types (PhotoFileFormat self, int* result_length1);
+gchar* configuration_facade_get_external_raw_app (ConfigurationFacade* self);
+static void preferences_dialog_setup_dir_pattern (PreferencesDialog* self, GtkComboBox* combo_box, GtkEntry* entry);
+gboolean configuration_facade_get_use_lowercase_filenames (ConfigurationFacade* self);
+void configuration_facade_set_transparent_background_type (ConfigurationFacade* self, const gchar* type);
+void configuration_facade_set_transparent_background_color (ConfigurationFacade* self, const gchar* color_name);
+void resources_launch_help (GdkScreen* screen, const gchar* anchor, GError** error);
+SortedList* desktop_integration_get_apps_for_mime_types (gchar** mime_types, int mime_types_length1);
+GdkPixbuf* scale_pixbuf (GdkPixbuf* pixbuf, gint scale, GdkInterpType interp, gboolean scale_up);
+#define RESOURCES_DEFAULT_ICON_SCALE 24
+gint sorted_list_index_of (SortedList* self, gconstpointer search);
+gchar* configuration_facade_get_directory_pattern (ConfigurationFacade* self);
+gchar* configuration_facade_get_directory_pattern_custom (ConfigurationFacade* self);
+gboolean is_string_empty (const gchar* s);
+void preferences_dialog_show_preferences (void);
+GFile* app_dirs_get_import_dir (void);
+static void preferences_dialog_commit_on_close (PreferencesDialog* self);
+void config_facade_commit_bg_color (ConfigFacade* self);
+void configuration_facade_set_auto_import_from_library (ConfigurationFacade* self, gboolean auto_import);
+void configuration_facade_set_commit_metadata_to_masters (ConfigurationFacade* self, gboolean commit_metadata);
+void app_dirs_set_import_dir (const gchar* path);
+void configuration_facade_set_directory_pattern_custom (ConfigurationFacade* self, const gchar* s);
+void configuration_facade_set_directory_pattern (ConfigurationFacade* self, const gchar* s);
+static gboolean preferences_dialog_get_allow_closing (PreferencesDialog* self);
+static void preferences_dialog_set_background_color (PreferencesDialog* self, gdouble bg_color_value);
+gboolean has_only_key_modifier (GdkModifierType field, GdkModifierType mask);
+void parse_color (const gchar* spec, GdkRGBA* result);
+#define CONFIG_FACADE_DEFAULT_BG_COLOR "#444"
+static void preferences_dialog_set_allow_closing (PreferencesDialog* self, gboolean allow);
+void config_facade_set_bg_color (ConfigFacade* self, GdkRGBA* color);
+static void preferences_dialog_to_grayscale (PreferencesDialog* self, gdouble color_value, GdkRGBA* result);
+gpointer sorted_list_get_at (SortedList* self, gint index);
+void configuration_facade_set_external_photo_app (ConfigurationFacade* self, const gchar* external_photo_app);
+gchar* desktop_integration_get_app_open_command (GAppInfo* app_info);
+void configuration_facade_set_external_raw_app (ConfigurationFacade* self, const gchar* external_raw_app);
+static RawDeveloper preferences_dialog_raw_developer_from_combo (PreferencesDialog* self);
+void configuration_facade_set_default_raw_developer (ConfigurationFacade* self, RawDeveloper d);
+static void preferences_dialog_on_current_folder_changed (PreferencesDialog* self);
+static gboolean preferences_dialog_real_map_event (GtkWidget* base, GdkEventAny* event);
+static void _preferences_dialog_on_current_folder_changed_gtk_file_chooser_current_folder_changed (GtkFileChooser* _sender, gpointer self);
+static PreferencesDialogPathFormat* preferences_dialog_path_format_new (const gchar* name, const gchar* pattern);
+static PreferencesDialogPathFormat* preferences_dialog_path_format_construct (GType object_type, const gchar* name, const gchar* pattern);
+void configuration_facade_set_use_lowercase_filenames (ConfigurationFacade* self, gboolean b);
+enum {
+ PREFERENCES_DIALOG_PATH_FORMAT_DUMMY_PROPERTY
+};
+static void preferences_dialog_path_format_finalize (PreferencesDialogPathFormat * obj);
+static void preferences_dialog_finalize (GObject * obj);
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static gint _vala_array_length (gpointer array);
+
+
+static gboolean _preferences_dialog_on_delete_gtk_widget_delete_event (GtkWidget* _sender, GdkEventAny* event, gpointer self) {
+ gboolean result;
+ result = preferences_dialog_on_delete ((PreferencesDialog*) self);
+#line 72 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 324 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_close_gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) {
+#line 73 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_close ((PreferencesDialog*) self);
+#line 331 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_value_changed_gtk_adjustment_value_changed (GtkAdjustment* _sender, gpointer self) {
+#line 77 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_value_changed ((PreferencesDialog*) self);
+#line 338 "Preferences.c"
+}
+
+
+static gboolean _preferences_dialog_on_bg_color_reset_gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
+ gboolean result;
+ result = preferences_dialog_on_bg_color_reset ((PreferencesDialog*) self, event);
+#line 79 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 347 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_radio_changed_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) {
+#line 81 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_radio_changed ((PreferencesDialog*) self);
+#line 354 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_color_changed_gtk_color_button_color_set (GtkColorButton* _sender, gpointer self) {
+#line 92 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_color_changed ((PreferencesDialog*) self);
+#line 361 "Preferences.c"
+}
+
+
+static gboolean _preferences_dialog_on_local_pattern_help_gtk_label_activate_link (GtkLabel* _sender, const gchar* uri, gpointer self) {
+ gboolean result;
+ result = preferences_dialog_on_local_pattern_help ((PreferencesDialog*) self, uri);
+#line 120 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 370 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_dir_pattern_combo_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self) {
+#line 131 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_dir_pattern_combo_changed ((PreferencesDialog*) self);
+#line 377 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_dir_pattern_entry_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self) {
+#line 132 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_dir_pattern_entry_changed ((PreferencesDialog*) self);
+#line 384 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_lowercase_toggled_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) {
+#line 134 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_lowercase_toggled ((PreferencesDialog*) self);
+#line 391 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_photo_editor_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self) {
+#line 140 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_photo_editor_changed ((PreferencesDialog*) self);
+#line 398 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_raw_editor_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self) {
+#line 141 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_raw_editor_changed ((PreferencesDialog*) self);
+#line 405 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_default_raw_developer_changed_gtk_combo_box_changed (GtkComboBox* _sender, gpointer self) {
+#line 150 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_default_raw_developer_changed ((PreferencesDialog*) self);
+#line 412 "Preferences.c"
+}
+
+
+static PreferencesDialog* preferences_dialog_construct (GType object_type) {
+ PreferencesDialog * self = NULL;
+ gint _tmp0_;
+ AppWindow* _tmp1_;
+ AppWindow* _tmp2_;
+ GdkWindow* _tmp3_;
+ AppWindow* _tmp4_;
+ AppWindow* _tmp5_;
+ GtkAdjustment* _tmp6_;
+ GtkAdjustment* _tmp7_;
+ gdouble _tmp8_;
+ ConfigFacade* _tmp9_;
+ ConfigFacade* _tmp10_;
+ GdkRGBA _tmp11_ = {0};
+ gdouble _tmp12_;
+ GtkAdjustment* _tmp13_;
+ GtkScale* _tmp14_;
+ GtkRadioButton* _tmp15_;
+ GtkRadioButton* _tmp16_;
+ GtkRadioButton* _tmp17_;
+ GtkRadioButton* _tmp18_;
+ GtkColorButton* _tmp19_;
+ GdkRGBA color = {0};
+ ConfigFacade* _tmp20_;
+ ConfigFacade* _tmp21_;
+ gchar* _tmp22_;
+ gchar* _tmp23_;
+ GtkColorButton* _tmp24_;
+ GdkRGBA _tmp25_;
+ GtkColorButton* _tmp26_;
+ ConfigFacade* _tmp27_;
+ ConfigFacade* _tmp28_;
+ gchar* _tmp29_;
+ gchar* _tmp30_;
+ gchar* _tmp31_;
+ GQuark _tmp33_ = 0U;
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ static GQuark _tmp32_label0 = 0;
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ static GQuark _tmp32_label1 = 0;
+#line 456 "Preferences.c"
+ gchar* help_path = NULL;
+ gchar* _tmp37_;
+ const gchar* _tmp38_;
+ gchar* _tmp50_;
+ gchar* _tmp51_;
+ gchar* _tmp52_;
+ gchar* _tmp53_;
+ gchar* _tmp54_;
+ gchar* _tmp55_;
+ GtkComboBoxText* _tmp56_;
+ GtkEntry* _tmp57_;
+ GtkCheckButton* _tmp58_;
+ GtkNotebook* _tmp59_;
+ GtkWidget* _tmp60_;
+ PluginsManifestWidgetMediator* _tmp61_;
+ GtkComboBox* _tmp62_;
+ GtkComboBox* _tmp63_;
+ GtkCheckButton* _tmp64_;
+ ConfigFacade* _tmp65_;
+ ConfigFacade* _tmp66_;
+ gboolean _tmp67_;
+ GtkCheckButton* _tmp68_;
+ ConfigFacade* _tmp69_;
+ ConfigFacade* _tmp70_;
+ gboolean _tmp71_;
+ GtkComboBoxText* _tmp72_;
+ gchar* _tmp73_;
+ gchar* _tmp74_;
+ GtkComboBoxText* _tmp75_;
+ gchar* _tmp76_;
+ gchar* _tmp77_;
+ ConfigFacade* _tmp78_;
+ ConfigFacade* _tmp79_;
+ RawDeveloper _tmp80_;
+ GtkComboBoxText* _tmp81_;
+#line 68 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = resources_use_header_bar ();
+#line 68 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self = (PreferencesDialog*) g_object_new (object_type, "use-header-bar", _tmp0_, NULL);
+#line 70 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = app_window_get_instance ();
+#line 70 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = _tmp1_;
+#line 70 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = gtk_widget_get_parent_window (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_widget_get_type (), GtkWidget));
+#line 70 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_set_parent_window (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), _tmp3_);
+#line 70 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp2_);
+#line 71 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = app_window_get_instance ();
+#line 71 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = _tmp4_;
+#line 71 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_window_set_transient_for (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_window_get_type (), GtkWindow));
+#line 71 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp5_);
+#line 72 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), "delete-event", (GCallback) _preferences_dialog_on_delete_gtk_widget_delete_event, self, 0);
+#line 73 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), "response", (GCallback) _preferences_dialog_on_close_gtk_dialog_response, self, 0);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = self->priv->bg_color_adjustment;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = self->priv->bg_color_adjustment;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = gtk_adjustment_get_upper (_tmp7_);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = config_facade_get_instance ();
+#line 75 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp10_ = _tmp9_;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ config_facade_get_bg_color (_tmp10_, &_tmp11_);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12_ = _tmp11_.red;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_adjustment_set_value (_tmp6_, _tmp8_ - (_tmp12_ * 65535.0));
+#line 75 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp10_);
+#line 77 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp13_ = self->priv->bg_color_adjustment;
+#line 77 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (_tmp13_, "value-changed", (GCallback) _preferences_dialog_on_value_changed_gtk_adjustment_value_changed, self, 0);
+#line 79 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp14_ = self->priv->bg_color_slider;
+#line 79 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, gtk_widget_get_type (), GtkWidget), "button-press-event", (GCallback) _preferences_dialog_on_bg_color_reset_gtk_widget_button_press_event, self, 0);
+#line 81 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp15_ = self->priv->transparent_checker_radio;
+#line 81 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, gtk_toggle_button_get_type (), GtkToggleButton), "toggled", (GCallback) _preferences_dialog_on_radio_changed_gtk_toggle_button_toggled, self, 0);
+#line 82 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp16_ = self->priv->transparent_solid_radio;
+#line 82 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, gtk_toggle_button_get_type (), GtkToggleButton), "toggled", (GCallback) _preferences_dialog_on_radio_changed_gtk_toggle_button_toggled, self, 0);
+#line 83 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp17_ = self->priv->transparent_none_radio;
+#line 83 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, gtk_toggle_button_get_type (), GtkToggleButton), "toggled", (GCallback) _preferences_dialog_on_radio_changed_gtk_toggle_button_toggled, self, 0);
+#line 85 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp18_ = self->priv->transparent_solid_radio;
+#line 85 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp19_ = self->priv->transparent_solid_color;
+#line 85 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_object_bind_property_with_closures (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, G_TYPE_OBJECT, GObject), "active", G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, G_TYPE_OBJECT, GObject), "sensitive", G_BINDING_DEFAULT, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, (GClosureNotify) NULL)));
+#line 89 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ memset (&color, 0, sizeof (GdkRGBA));
+#line 90 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp20_ = config_facade_get_instance ();
+#line 90 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp21_ = _tmp20_;
+#line 90 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp22_ = configuration_facade_get_transparent_background_color (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 90 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp23_ = _tmp22_;
+#line 90 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gdk_rgba_parse (&color, _tmp23_);
+#line 90 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp23_);
+#line 90 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp21_);
+#line 91 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp24_ = self->priv->transparent_solid_color;
+#line 91 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp25_ = color;
+#line 91 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_color_chooser_set_rgba (G_TYPE_CHECK_INSTANCE_TYPE (_tmp24_, GTK_TYPE_COLOR_CHOOSER) ? ((GtkColorChooser*) _tmp24_) : NULL, &_tmp25_);
+#line 92 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp26_ = self->priv->transparent_solid_color;
+#line 92 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (_tmp26_, "color-set", (GCallback) _preferences_dialog_on_color_changed_gtk_color_button_color_set, self, 0);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp27_ = config_facade_get_instance ();
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp28_ = _tmp27_;
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp29_ = configuration_facade_get_transparent_background_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp28_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp30_ = _tmp29_;
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp28_);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp31_ = _tmp30_;
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp33_ = (NULL == _tmp31_) ? 0 : g_quark_from_string (_tmp31_);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_free (_tmp31_);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp33_ == ((0 != _tmp32_label0) ? _tmp32_label0 : (_tmp32_label0 = g_quark_from_static_string ("checkered")))) {
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ switch (0) {
+#line 608 "Preferences.c"
+ default:
+ {
+ GtkRadioButton* _tmp34_;
+#line 96 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp34_ = self->priv->transparent_checker_radio;
+#line 96 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, gtk_toggle_button_get_type (), GtkToggleButton), TRUE);
+#line 97 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ break;
+#line 618 "Preferences.c"
+ }
+ }
+ } else if (_tmp33_ == ((0 != _tmp32_label1) ? _tmp32_label1 : (_tmp32_label1 = g_quark_from_static_string ("solid")))) {
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ switch (0) {
+#line 624 "Preferences.c"
+ default:
+ {
+ GtkRadioButton* _tmp35_;
+#line 99 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp35_ = self->priv->transparent_solid_radio;
+#line 99 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, gtk_toggle_button_get_type (), GtkToggleButton), TRUE);
+#line 100 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ break;
+#line 634 "Preferences.c"
+ }
+ }
+ } else {
+#line 94 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ switch (0) {
+#line 640 "Preferences.c"
+ default:
+ {
+ GtkRadioButton* _tmp36_;
+#line 102 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp36_ = self->priv->transparent_none_radio;
+#line 102 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, gtk_toggle_button_get_type (), GtkToggleButton), TRUE);
+#line 103 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ break;
+#line 650 "Preferences.c"
+ }
+ }
+ }
+#line 111 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp37_ = resources_get_help_path ();
+#line 111 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ help_path = _tmp37_;
+#line 113 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp38_ = help_path;
+#line 113 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp38_ == NULL) {
+#line 662 "Preferences.c"
+ GtkLabel* _tmp39_;
+ gchar* _tmp40_;
+ gchar* _tmp41_;
+ gchar* _tmp42_;
+ gchar* _tmp43_;
+#line 115 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp39_ = self->priv->pattern_help;
+#line 115 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp40_ = g_strconcat ("<a href=\"" RESOURCES_DIR_PATTERN_URI_SYSWIDE "\">", _ ("(Help)"), NULL);
+#line 115 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp41_ = _tmp40_;
+#line 115 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp42_ = g_strconcat (_tmp41_, "</a>", NULL);
+#line 115 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp43_ = _tmp42_;
+#line 115 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_label_set_markup (_tmp39_, _tmp43_);
+#line 115 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp43_);
+#line 115 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp41_);
+#line 684 "Preferences.c"
+ } else {
+ GtkLabel* _tmp44_;
+ gchar* _tmp45_;
+ gchar* _tmp46_;
+ gchar* _tmp47_;
+ gchar* _tmp48_;
+ GtkLabel* _tmp49_;
+#line 119 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp44_ = self->priv->pattern_help;
+#line 119 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp45_ = g_strconcat ("<a href=\"dummy:\">", _ ("(Help)"), NULL);
+#line 119 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp46_ = _tmp45_;
+#line 119 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp47_ = g_strconcat (_tmp46_, "</a>", NULL);
+#line 119 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp48_ = _tmp47_;
+#line 119 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_label_set_markup (_tmp44_, _tmp48_);
+#line 119 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp48_);
+#line 119 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp46_);
+#line 120 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp49_ = self->priv->pattern_help;
+#line 120 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (_tmp49_, "activate-link", (GCallback) _preferences_dialog_on_local_pattern_help_gtk_label_activate_link, self, 0);
+#line 712 "Preferences.c"
+ }
+#line 123 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp50_ = g_strdup_printf (_ ("Year%sMonth%sDay"), G_DIR_SEPARATOR_S, G_DIR_SEPARATOR_S);
+#line 123 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp51_ = _tmp50_;
+#line 123 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_add_to_dir_formats (self, _tmp51_, "%Y" G_DIR_SEPARATOR_S "%m" G_DIR_SEPARATOR_S "%d");
+#line 123 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp51_);
+#line 125 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp52_ = g_strdup_printf (_ ("Year%sMonth"), G_DIR_SEPARATOR_S);
+#line 125 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp53_ = _tmp52_;
+#line 125 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_add_to_dir_formats (self, _tmp53_, "%Y" G_DIR_SEPARATOR_S "%m");
+#line 125 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp53_);
+#line 127 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp54_ = g_strdup_printf (_ ("Year%sMonth-Day"), G_DIR_SEPARATOR_S);
+#line 127 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp55_ = _tmp54_;
+#line 127 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_add_to_dir_formats (self, _tmp55_, "%Y" G_DIR_SEPARATOR_S "%m-%d");
+#line 127 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp55_);
+#line 129 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_add_to_dir_formats (self, _ ("Year-Month-Day"), "%Y-%m-%d");
+#line 130 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_add_to_dir_formats (self, _ ("Custom"), NULL);
+#line 131 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp56_ = self->priv->dir_pattern_combo;
+#line 131 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp56_, gtk_combo_box_get_type (), GtkComboBox), "changed", (GCallback) _preferences_dialog_on_dir_pattern_combo_changed_gtk_combo_box_changed, self, 0);
+#line 132 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp57_ = self->priv->dir_pattern_entry;
+#line 132 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp57_, GTK_TYPE_EDITABLE, GtkEditable), "changed", (GCallback) _preferences_dialog_on_dir_pattern_entry_changed_gtk_editable_changed, self, 0);
+#line 134 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp58_ = self->priv->lowercase;
+#line 134 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp58_, gtk_toggle_button_get_type (), GtkToggleButton), "toggled", (GCallback) _preferences_dialog_on_lowercase_toggled_gtk_toggle_button_toggled, self, 0);
+#line 136 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp59_ = self->priv->preferences_notebook;
+#line 136 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp60_ = gtk_notebook_get_nth_page (_tmp59_, 2);
+#line 136 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp61_ = self->priv->plugins_mediator;
+#line 136 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_container_add (G_TYPE_CHECK_INSTANCE_TYPE (_tmp60_, gtk_container_get_type ()) ? ((GtkContainer*) _tmp60_) : NULL, G_TYPE_CHECK_INSTANCE_CAST (_tmp61_, gtk_widget_get_type (), GtkWidget));
+#line 138 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_populate_preference_options (self);
+#line 140 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp62_ = self->priv->photo_editor_combo;
+#line 140 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (_tmp62_, "changed", (GCallback) _preferences_dialog_on_photo_editor_changed_gtk_combo_box_changed, self, 0);
+#line 141 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp63_ = self->priv->raw_editor_combo;
+#line 141 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (_tmp63_, "changed", (GCallback) _preferences_dialog_on_raw_editor_changed_gtk_combo_box_changed, self, 0);
+#line 143 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp64_ = self->priv->autoimport;
+#line 143 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp65_ = config_facade_get_instance ();
+#line 143 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp66_ = _tmp65_;
+#line 143 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp67_ = configuration_facade_get_auto_import_from_library (G_TYPE_CHECK_INSTANCE_CAST (_tmp66_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 143 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp64_, gtk_toggle_button_get_type (), GtkToggleButton), _tmp67_);
+#line 143 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp66_);
+#line 145 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp68_ = self->priv->write_metadata;
+#line 145 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp69_ = config_facade_get_instance ();
+#line 145 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp70_ = _tmp69_;
+#line 145 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp71_ = configuration_facade_get_commit_metadata_to_masters (G_TYPE_CHECK_INSTANCE_CAST (_tmp70_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 145 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp68_, gtk_toggle_button_get_type (), GtkToggleButton), _tmp71_);
+#line 145 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp70_);
+#line 147 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp72_ = self->priv->default_raw_developer_combo;
+#line 147 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp73_ = raw_developer_get_label (RAW_DEVELOPER_CAMERA);
+#line 147 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp74_ = _tmp73_;
+#line 147 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_combo_box_text_append_text (_tmp72_, _tmp74_);
+#line 147 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp74_);
+#line 148 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp75_ = self->priv->default_raw_developer_combo;
+#line 148 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp76_ = raw_developer_get_label (RAW_DEVELOPER_SHOTWELL);
+#line 148 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp77_ = _tmp76_;
+#line 148 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_combo_box_text_append_text (_tmp75_, _tmp77_);
+#line 148 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp77_);
+#line 149 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp78_ = config_facade_get_instance ();
+#line 149 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp79_ = _tmp78_;
+#line 149 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp80_ = configuration_facade_get_default_raw_developer (G_TYPE_CHECK_INSTANCE_CAST (_tmp79_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 149 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_set_raw_developer_combo (self, _tmp80_);
+#line 149 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp79_);
+#line 150 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp81_ = self->priv->default_raw_developer_combo;
+#line 150 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp81_, gtk_combo_box_get_type (), GtkComboBox), "changed", (GCallback) _preferences_dialog_on_default_raw_developer_changed_gtk_combo_box_changed, self, 0);
+#line 67 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (help_path);
+#line 67 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return self;
+#line 834 "Preferences.c"
+}
+
+
+static PreferencesDialog* preferences_dialog_new (void) {
+#line 67 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return preferences_dialog_construct (TYPE_PREFERENCES_DIALOG);
+#line 841 "Preferences.c"
+}
+
+
+void preferences_dialog_populate_preference_options (PreferencesDialog* self) {
+ GtkComboBox* _tmp0_;
+ gint _tmp1_;
+ gchar** _tmp2_;
+ gchar** _tmp3_;
+ gint _tmp3__length1;
+ ConfigFacade* _tmp4_;
+ ConfigFacade* _tmp5_;
+ gchar* _tmp6_;
+ gchar* _tmp7_;
+ SortedList* _tmp8_ = NULL;
+ GtkComboBox* _tmp9_;
+ gint _tmp10_;
+ gchar** _tmp11_;
+ gchar** _tmp12_;
+ gint _tmp12__length1;
+ ConfigFacade* _tmp13_;
+ ConfigFacade* _tmp14_;
+ gchar* _tmp15_;
+ gchar* _tmp16_;
+ SortedList* _tmp17_ = NULL;
+ GtkComboBoxText* _tmp18_;
+ GtkEntry* _tmp19_;
+ GtkCheckButton* _tmp20_;
+ ConfigFacade* _tmp21_;
+ ConfigFacade* _tmp22_;
+ gboolean _tmp23_;
+#line 153 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = self->priv->photo_editor_combo;
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = photo_file_format_get_editable_mime_types (&_tmp1_);
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = _tmp2_;
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3__length1 = _tmp1_;
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = config_facade_get_instance ();
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = _tmp4_;
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = configuration_facade_get_external_photo_app (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = _tmp6_;
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_populate_app_combo_box (self, _tmp0_, _tmp3_, _tmp1_, _tmp7_, &_tmp8_);
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->external_photo_apps);
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->priv->external_photo_apps = _tmp8_;
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp7_);
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp5_);
+#line 154 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = (_vala_array_free (_tmp3_, _tmp3__length1, (GDestroyNotify) g_free), NULL);
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = self->priv->raw_editor_combo;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp11_ = photo_file_format_get_mime_types (PHOTO_FILE_FORMAT_RAW, &_tmp10_);
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12_ = _tmp11_;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12__length1 = _tmp10_;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp13_ = config_facade_get_instance ();
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp14_ = _tmp13_;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp15_ = configuration_facade_get_external_raw_app (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp16_ = _tmp15_;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_populate_app_combo_box (self, _tmp9_, _tmp12_, _tmp10_, _tmp16_, &_tmp17_);
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->external_raw_apps);
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->priv->external_raw_apps = _tmp17_;
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp16_);
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp14_);
+#line 157 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12_ = (_vala_array_free (_tmp12_, _tmp12__length1, (GDestroyNotify) g_free), NULL);
+#line 160 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp18_ = self->priv->dir_pattern_combo;
+#line 160 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp19_ = self->priv->dir_pattern_entry;
+#line 160 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_setup_dir_pattern (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, gtk_combo_box_get_type (), GtkComboBox), _tmp19_);
+#line 162 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp20_ = self->priv->lowercase;
+#line 162 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp21_ = config_facade_get_instance ();
+#line 162 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp22_ = _tmp21_;
+#line 162 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp23_ = configuration_facade_get_use_lowercase_filenames (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 162 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, gtk_toggle_button_get_type (), GtkToggleButton), _tmp23_);
+#line 162 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp22_);
+#line 948 "Preferences.c"
+}
+
+
+static void preferences_dialog_on_radio_changed (PreferencesDialog* self) {
+ ConfigFacade* config = NULL;
+ ConfigFacade* _tmp0_;
+ GtkRadioButton* _tmp1_;
+ gboolean _tmp2_;
+ gboolean _tmp3_;
+#line 165 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 166 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = config_facade_get_instance ();
+#line 166 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ config = _tmp0_;
+#line 168 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = self->priv->transparent_checker_radio;
+#line 168 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 168 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = _tmp2_;
+#line 168 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp3_) {
+#line 972 "Preferences.c"
+ ConfigFacade* _tmp4_;
+#line 169 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = config;
+#line 169 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_transparent_background_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), "checkered");
+#line 978 "Preferences.c"
+ } else {
+ GtkRadioButton* _tmp5_;
+ gboolean _tmp6_;
+ gboolean _tmp7_;
+#line 170 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = self->priv->transparent_solid_radio;
+#line 170 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 170 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = _tmp6_;
+#line 170 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp7_) {
+#line 991 "Preferences.c"
+ ConfigFacade* _tmp8_;
+#line 171 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = config;
+#line 171 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_transparent_background_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), "solid");
+#line 997 "Preferences.c"
+ } else {
+ ConfigFacade* _tmp9_;
+#line 173 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = config;
+#line 173 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_transparent_background_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), "none");
+#line 1004 "Preferences.c"
+ }
+ }
+#line 165 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (config);
+#line 1009 "Preferences.c"
+}
+
+
+static void preferences_dialog_on_color_changed (PreferencesDialog* self) {
+ gchar* color = NULL;
+ GtkColorButton* _tmp0_;
+ GdkRGBA _tmp1_ = {0};
+ GdkRGBA _tmp2_;
+ gchar* _tmp3_;
+ ConfigFacade* _tmp4_;
+ ConfigFacade* _tmp5_;
+#line 177 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 178 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = self->priv->transparent_solid_color;
+#line 178 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_color_chooser_get_rgba (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, GTK_TYPE_COLOR_CHOOSER) ? ((GtkColorChooser*) _tmp0_) : NULL, &_tmp1_);
+#line 178 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = _tmp1_;
+#line 178 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = gdk_rgba_to_string (&_tmp2_);
+#line 178 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ color = _tmp3_;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = config_facade_get_instance ();
+#line 179 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = _tmp4_;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_transparent_background_color (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), color);
+#line 179 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp5_);
+#line 177 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (color);
+#line 1043 "Preferences.c"
+}
+
+
+static gboolean preferences_dialog_on_local_pattern_help (PreferencesDialog* self, const gchar* ignore) {
+ gboolean result = FALSE;
+ GError * _inner_error_ = NULL;
+#line 184 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (IS_PREFERENCES_DIALOG (self), FALSE);
+#line 184 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (ignore != NULL, FALSE);
+#line 1054 "Preferences.c"
+ {
+ AppWindow* _tmp0_;
+ AppWindow* _tmp1_;
+ GdkScreen* _tmp2_;
+#line 186 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = app_window_get_instance ();
+#line 186 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = _tmp0_;
+#line 186 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = gtk_window_get_screen (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_window_get_type (), GtkWindow));
+#line 186 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ resources_launch_help (_tmp2_, "other-files.page", &_inner_error_);
+#line 186 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp1_);
+#line 186 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1071 "Preferences.c"
+ goto __catch22_g_error;
+ }
+ }
+ goto __finally22;
+ __catch22_g_error:
+ {
+ GError* e = NULL;
+ GError* _tmp3_;
+ const gchar* _tmp4_;
+#line 185 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ e = _inner_error_;
+#line 185 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _inner_error_ = NULL;
+#line 188 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = e;
+#line 188 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = _tmp3_->message;
+#line 188 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_message ("Preferences.vala:188: Unable to launch help: %s", _tmp4_);
+#line 185 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_error_free0 (e);
+#line 1093 "Preferences.c"
+ }
+ __finally22:
+#line 185 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1098 "Preferences.c"
+ gboolean _tmp5_ = FALSE;
+#line 185 "/home/jens/Source/shotwell/src/dialogs/Preferences.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 185 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_clear_error (&_inner_error_);
+#line 185 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return _tmp5_;
+#line 1106 "Preferences.c"
+ }
+#line 190 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ result = TRUE;
+#line 190 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 1112 "Preferences.c"
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+#line 220 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return self ? g_object_ref (self) : NULL;
+#line 1119 "Preferences.c"
+}
+
+
+static void preferences_dialog_populate_app_combo_box (PreferencesDialog* self, GtkComboBox* combo_box, gchar** mime_types, int mime_types_length1, const gchar* current_app_executable, SortedList* * external_apps) {
+ SortedList* _vala_external_apps = NULL;
+ gchar** _tmp0_;
+ gint _tmp0__length1;
+ gchar** _tmp1_;
+ gint _tmp1__length1;
+ SortedList* _tmp2_;
+ SortedList* _tmp3_;
+ gint _tmp4_;
+ gint _tmp5_;
+ GtkCellRendererPixbuf* pixbuf_renderer = NULL;
+ GtkCellRendererPixbuf* _tmp6_;
+ GtkCellRendererText* text_renderer = NULL;
+ GtkCellRendererText* _tmp7_;
+ GtkComboBox* _tmp8_;
+ GtkComboBox* _tmp9_;
+ GtkCellRendererPixbuf* _tmp10_;
+ GtkComboBox* _tmp11_;
+ GtkCellRendererText* _tmp12_;
+ GtkComboBox* _tmp13_;
+ GtkCellRendererPixbuf* _tmp14_;
+ GtkComboBox* _tmp15_;
+ GtkCellRendererText* _tmp16_;
+ GtkListStore* combo_store = NULL;
+ GtkListStore* _tmp17_;
+ GtkTreeIter iter = {0};
+ gint current_app = 0;
+ GtkComboBox* _tmp67_;
+ GtkListStore* _tmp68_;
+ gint _tmp69_;
+ GError * _inner_error_ = NULL;
+#line 193 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 193 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
+#line 193 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (current_app_executable != NULL);
+#line 196 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = mime_types;
+#line 196 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0__length1 = mime_types_length1;
+#line 196 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _vala_assert (_tmp0__length1 != 0, "mime_types.length != 0");
+#line 197 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = mime_types;
+#line 197 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1__length1 = mime_types_length1;
+#line 197 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = desktop_integration_get_apps_for_mime_types (_tmp1_, _tmp1__length1);
+#line 197 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_vala_external_apps);
+#line 197 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _vala_external_apps = _tmp2_;
+#line 199 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = _vala_external_apps;
+#line 199 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 199 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = _tmp4_;
+#line 199 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp5_ == 0) {
+#line 200 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (external_apps) {
+#line 200 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ *external_apps = _vala_external_apps;
+#line 1188 "Preferences.c"
+ } else {
+#line 200 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_vala_external_apps);
+#line 1192 "Preferences.c"
+ }
+#line 200 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return;
+#line 1196 "Preferences.c"
+ }
+#line 203 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = (GtkCellRendererPixbuf*) gtk_cell_renderer_pixbuf_new ();
+#line 203 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_object_ref_sink (_tmp6_);
+#line 203 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ pixbuf_renderer = _tmp6_;
+#line 204 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = (GtkCellRendererText*) gtk_cell_renderer_text_new ();
+#line 204 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_object_ref_sink (_tmp7_);
+#line 204 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ text_renderer = _tmp7_;
+#line 205 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = combo_box;
+#line 205 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_cell_layout_clear (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GTK_TYPE_CELL_LAYOUT, GtkCellLayout));
+#line 206 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = combo_box;
+#line 206 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp10_ = pixbuf_renderer;
+#line 206 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_cell_layout_pack_start (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GTK_TYPE_CELL_LAYOUT, GtkCellLayout), G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, gtk_cell_renderer_get_type (), GtkCellRenderer), FALSE);
+#line 207 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp11_ = combo_box;
+#line 207 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12_ = text_renderer;
+#line 207 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_cell_layout_pack_start (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, GTK_TYPE_CELL_LAYOUT, GtkCellLayout), G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, gtk_cell_renderer_get_type (), GtkCellRenderer), FALSE);
+#line 208 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp13_ = combo_box;
+#line 208 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp14_ = pixbuf_renderer;
+#line 208 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_cell_layout_add_attribute (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GTK_TYPE_CELL_LAYOUT, GtkCellLayout), G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, gtk_cell_renderer_get_type (), GtkCellRenderer), "pixbuf", 0);
+#line 209 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp15_ = combo_box;
+#line 209 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp16_ = text_renderer;
+#line 209 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_cell_layout_add_attribute (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, GTK_TYPE_CELL_LAYOUT, GtkCellLayout), G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, gtk_cell_renderer_get_type (), GtkCellRenderer), "text", 1);
+#line 212 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp17_ = gtk_list_store_new (2, gdk_pixbuf_get_type (), G_TYPE_STRING, -1);
+#line 212 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ combo_store = _tmp17_;
+#line 215 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ current_app = -1;
+#line 1244 "Preferences.c"
+ {
+ GeeIterator* _app_it = NULL;
+ SortedList* _tmp18_;
+ GeeIterator* _tmp19_;
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp18_ = _vala_external_apps;
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp19_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, GEE_TYPE_ITERABLE, GeeIterable));
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _app_it = _tmp19_;
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ while (TRUE) {
+#line 1257 "Preferences.c"
+ GeeIterator* _tmp20_;
+ gboolean _tmp21_;
+ GAppInfo* app = NULL;
+ GeeIterator* _tmp22_;
+ gpointer _tmp23_;
+ GtkListStore* _tmp24_;
+ GtkTreeIter _tmp25_ = {0};
+ GIcon* app_icon = NULL;
+ GAppInfo* _tmp26_;
+ GIcon* _tmp27_;
+ GIcon* _tmp28_;
+ GtkListStore* _tmp56_;
+ GtkTreeIter _tmp57_;
+ GAppInfo* _tmp58_;
+ const gchar* _tmp59_;
+ GValue _tmp60_ = {0};
+ GAppInfo* _tmp61_;
+ const gchar* _tmp62_;
+ const gchar* _tmp63_;
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp20_ = _app_it;
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp21_ = gee_iterator_next (_tmp20_);
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (!_tmp21_) {
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ break;
+#line 1285 "Preferences.c"
+ }
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp22_ = _app_it;
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp23_ = gee_iterator_get (_tmp22_);
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ app = (GAppInfo*) _tmp23_;
+#line 218 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp24_ = combo_store;
+#line 218 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_list_store_append (_tmp24_, &_tmp25_);
+#line 218 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ iter = _tmp25_;
+#line 220 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp26_ = app;
+#line 220 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp27_ = g_app_info_get_icon (_tmp26_);
+#line 220 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp28_ = _g_object_ref0 (_tmp27_);
+#line 220 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ app_icon = _tmp28_;
+#line 1307 "Preferences.c"
+ {
+ GIcon* _tmp29_;
+#line 222 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp29_ = app_icon;
+#line 222 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, g_file_icon_get_type ())) {
+#line 1314 "Preferences.c"
+ GdkPixbuf* _tmp30_ = NULL;
+ GIcon* _tmp31_;
+ GFile* _tmp32_;
+ gchar* _tmp33_;
+ gchar* _tmp34_;
+ GdkPixbuf* _tmp35_;
+ GdkPixbuf* _tmp36_;
+ GtkListStore* _tmp37_;
+ GtkTreeIter _tmp38_;
+ GdkPixbuf* _tmp39_;
+ GValue _tmp40_ = {0};
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp31_ = app_icon;
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp32_ = g_file_icon_get_file (G_TYPE_CHECK_INSTANCE_CAST (_tmp31_, g_file_icon_get_type (), GFileIcon));
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp33_ = g_file_get_path (_tmp32_);
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp34_ = _tmp33_;
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp35_ = gdk_pixbuf_new_from_file (_tmp34_, &_inner_error_);
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp36_ = _tmp35_;
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp34_);
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp30_ = _tmp36_;
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1344 "Preferences.c"
+ goto __catch23_g_error;
+ }
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp37_ = combo_store;
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp38_ = iter;
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp39_ = scale_pixbuf (_tmp30_, RESOURCES_DEFAULT_ICON_SCALE, GDK_INTERP_BILINEAR, FALSE);
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_value_init (&_tmp40_, gdk_pixbuf_get_type ());
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_value_take_object (&_tmp40_, _tmp39_);
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_list_store_set_value (_tmp37_, &_tmp38_, 0, &_tmp40_);
+#line 223 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ G_IS_VALUE (&_tmp40_) ? (g_value_unset (&_tmp40_), NULL) : NULL;
+#line 222 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp30_);
+#line 1363 "Preferences.c"
+ } else {
+ GIcon* _tmp41_;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp41_ = app_icon;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp41_, g_themed_icon_get_type ())) {
+#line 1370 "Preferences.c"
+ GdkPixbuf* icon_pixbuf = NULL;
+ GtkIconTheme* _tmp42_;
+ GIcon* _tmp43_;
+ gchar** _tmp44_;
+ gchar** _tmp45_;
+ const gchar* _tmp46_;
+ GdkPixbuf* _tmp47_;
+ GtkListStore* _tmp48_;
+ GtkTreeIter _tmp49_;
+ GdkPixbuf* _tmp50_;
+ GValue _tmp51_ = {0};
+#line 227 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp42_ = gtk_icon_theme_get_default ();
+#line 227 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp43_ = app_icon;
+#line 227 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp45_ = _tmp44_ = g_themed_icon_get_names (G_TYPE_CHECK_INSTANCE_CAST (_tmp43_, g_themed_icon_get_type (), GThemedIcon));
+#line 227 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp46_ = _tmp45_[0];
+#line 227 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp47_ = gtk_icon_theme_load_icon (_tmp42_, _tmp46_, RESOURCES_DEFAULT_ICON_SCALE, GTK_ICON_LOOKUP_FORCE_SIZE, &_inner_error_);
+#line 227 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ icon_pixbuf = _tmp47_;
+#line 227 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1396 "Preferences.c"
+ goto __catch23_g_error;
+ }
+#line 231 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp48_ = combo_store;
+#line 231 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp49_ = iter;
+#line 231 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp50_ = icon_pixbuf;
+#line 231 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_value_init (&_tmp51_, gdk_pixbuf_get_type ());
+#line 231 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_value_set_object (&_tmp51_, _tmp50_);
+#line 231 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_list_store_set_value (_tmp48_, &_tmp49_, 0, &_tmp51_);
+#line 231 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ G_IS_VALUE (&_tmp51_) ? (g_value_unset (&_tmp51_), NULL) : NULL;
+#line 226 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (icon_pixbuf);
+#line 1415 "Preferences.c"
+ }
+ }
+ }
+ goto __finally23;
+ __catch23_g_error:
+ {
+ GError* _error_ = NULL;
+ GError* _tmp52_;
+ const gchar* _tmp53_;
+ gchar* _tmp54_;
+ gchar* _tmp55_;
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _error_ = _inner_error_;
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _inner_error_ = NULL;
+#line 234 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp52_ = _error_;
+#line 234 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp53_ = _tmp52_->message;
+#line 234 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp54_ = g_strconcat ("Error loading icon pixbuf: ", _tmp53_, NULL);
+#line 234 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp55_ = _tmp54_;
+#line 234 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_warning ("Preferences.vala:234: %s", _tmp55_);
+#line 234 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp55_);
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_error_free0 (_error_);
+#line 1445 "Preferences.c"
+ }
+ __finally23:
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (app_icon);
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (app);
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_app_it);
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (combo_store);
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (text_renderer);
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (pixbuf_renderer);
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.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 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_clear_error (&_inner_error_);
+#line 221 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return;
+#line 1468 "Preferences.c"
+ }
+#line 237 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp56_ = combo_store;
+#line 237 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp57_ = iter;
+#line 237 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp58_ = app;
+#line 237 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp59_ = g_app_info_get_name (_tmp58_);
+#line 237 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_value_init (&_tmp60_, G_TYPE_STRING);
+#line 237 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_value_set_string (&_tmp60_, _tmp59_);
+#line 237 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_list_store_set_value (_tmp56_, &_tmp57_, 1, &_tmp60_);
+#line 237 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ G_IS_VALUE (&_tmp60_) ? (g_value_unset (&_tmp60_), NULL) : NULL;
+#line 239 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp61_ = app;
+#line 239 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp62_ = g_app_info_get_commandline (_tmp61_);
+#line 239 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp63_ = current_app_executable;
+#line 239 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (g_strcmp0 (_tmp62_, _tmp63_) == 0) {
+#line 1494 "Preferences.c"
+ SortedList* _tmp64_;
+ GAppInfo* _tmp65_;
+ gint _tmp66_;
+#line 240 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp64_ = _vala_external_apps;
+#line 240 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp65_ = app;
+#line 240 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp66_ = sorted_list_index_of (_tmp64_, _tmp65_);
+#line 240 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ current_app = _tmp66_;
+#line 1506 "Preferences.c"
+ }
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (app_icon);
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (app);
+#line 1512 "Preferences.c"
+ }
+#line 217 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_app_it);
+#line 1516 "Preferences.c"
+ }
+#line 245 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp67_ = combo_box;
+#line 245 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp68_ = combo_store;
+#line 245 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_combo_box_set_model (_tmp67_, G_TYPE_CHECK_INSTANCE_CAST (_tmp68_, GTK_TYPE_TREE_MODEL, GtkTreeModel));
+#line 247 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp69_ = current_app;
+#line 247 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp69_ != -1) {
+#line 1528 "Preferences.c"
+ GtkComboBox* _tmp70_;
+ gint _tmp71_;
+#line 248 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp70_ = combo_box;
+#line 248 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp71_ = current_app;
+#line 248 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_combo_box_set_active (_tmp70_, _tmp71_);
+#line 1537 "Preferences.c"
+ }
+#line 193 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (combo_store);
+#line 193 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (text_renderer);
+#line 193 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (pixbuf_renderer);
+#line 193 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (external_apps) {
+#line 193 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ *external_apps = _vala_external_apps;
+#line 1549 "Preferences.c"
+ } else {
+#line 193 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_vala_external_apps);
+#line 1553 "Preferences.c"
+ }
+}
+
+
+static void preferences_dialog_setup_dir_pattern (PreferencesDialog* self, GtkComboBox* combo_box, GtkEntry* entry) {
+ gchar* pattern = NULL;
+ ConfigFacade* _tmp0_;
+ ConfigFacade* _tmp1_;
+ gchar* _tmp2_;
+ gchar* _tmp3_;
+ gboolean found = FALSE;
+ const gchar* _tmp4_;
+ gboolean _tmp32_;
+#line 251 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 251 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
+#line 251 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (GTK_IS_ENTRY (entry));
+#line 252 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = config_facade_get_instance ();
+#line 252 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = _tmp0_;
+#line 252 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = configuration_facade_get_directory_pattern (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 252 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = _tmp2_;
+#line 252 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp1_);
+#line 252 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ pattern = _tmp3_;
+#line 253 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ found = FALSE;
+#line 254 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = pattern;
+#line 254 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (NULL != _tmp4_) {
+#line 1591 "Preferences.c"
+ gint i = 0;
+#line 256 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ i = 0;
+#line 1595 "Preferences.c"
+ {
+ GeeArrayList* _pf_list = NULL;
+ GeeArrayList* _tmp5_;
+ GeeArrayList* _tmp6_;
+ gint _pf_size = 0;
+ GeeArrayList* _tmp7_;
+ gint _tmp8_;
+ gint _tmp9_;
+ gint _pf_index = 0;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = self->priv->path_formats;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = _g_object_ref0 (_tmp5_);
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _pf_list = _tmp6_;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = _pf_list;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = _tmp8_;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _pf_size = _tmp9_;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _pf_index = -1;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ while (TRUE) {
+#line 1623 "Preferences.c"
+ gint _tmp10_;
+ gint _tmp11_;
+ gint _tmp12_;
+ PreferencesDialogPathFormat* pf = NULL;
+ GeeArrayList* _tmp13_;
+ gint _tmp14_;
+ gpointer _tmp15_;
+ PreferencesDialogPathFormat* _tmp16_;
+ const gchar* _tmp17_;
+ const gchar* _tmp18_;
+ gint _tmp21_;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp10_ = _pf_index;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _pf_index = _tmp10_ + 1;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp11_ = _pf_index;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12_ = _pf_size;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (!(_tmp11_ < _tmp12_)) {
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ break;
+#line 1647 "Preferences.c"
+ }
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp13_ = _pf_list;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp14_ = _pf_index;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp15_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp14_);
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ pf = (PreferencesDialogPathFormat*) _tmp15_;
+#line 258 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp16_ = pf;
+#line 258 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp17_ = _tmp16_->pattern;
+#line 258 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp18_ = pattern;
+#line 258 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (g_strcmp0 (_tmp17_, _tmp18_) == 0) {
+#line 1665 "Preferences.c"
+ GtkComboBox* _tmp19_;
+ gint _tmp20_;
+#line 259 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp19_ = combo_box;
+#line 259 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp20_ = i;
+#line 259 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_combo_box_set_active (_tmp19_, _tmp20_);
+#line 260 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ found = TRUE;
+#line 261 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _preferences_dialog_path_format_unref0 (pf);
+#line 261 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ break;
+#line 1680 "Preferences.c"
+ }
+#line 263 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp21_ = i;
+#line 263 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ i = _tmp21_ + 1;
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _preferences_dialog_path_format_unref0 (pf);
+#line 1688 "Preferences.c"
+ }
+#line 257 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_pf_list);
+#line 1692 "Preferences.c"
+ }
+ } else {
+ gchar* s = NULL;
+ ConfigFacade* _tmp22_;
+ ConfigFacade* _tmp23_;
+ gchar* _tmp24_;
+ gchar* _tmp25_;
+ const gchar* _tmp26_;
+ gboolean _tmp27_;
+#line 267 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp22_ = config_facade_get_instance ();
+#line 267 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp23_ = _tmp22_;
+#line 267 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp24_ = configuration_facade_get_directory_pattern_custom (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 267 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp25_ = _tmp24_;
+#line 267 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp23_);
+#line 267 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ s = _tmp25_;
+#line 268 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp26_ = s;
+#line 268 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp27_ = is_string_empty (_tmp26_);
+#line 268 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (!_tmp27_) {
+#line 1720 "Preferences.c"
+ GtkComboBox* _tmp28_;
+ GeeArrayList* _tmp29_;
+ gint _tmp30_;
+ gint _tmp31_;
+#line 269 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp28_ = combo_box;
+#line 269 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp29_ = self->priv->path_formats;
+#line 269 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp30_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
+#line 269 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp31_ = _tmp30_;
+#line 269 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_combo_box_set_active (_tmp28_, _tmp31_ - 1);
+#line 270 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ found = TRUE;
+#line 1737 "Preferences.c"
+ }
+#line 254 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (s);
+#line 1741 "Preferences.c"
+ }
+#line 274 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp32_ = found;
+#line 274 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (!_tmp32_) {
+#line 1747 "Preferences.c"
+ GtkComboBox* _tmp33_;
+#line 275 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp33_ = combo_box;
+#line 275 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_combo_box_set_active (_tmp33_, 0);
+#line 1753 "Preferences.c"
+ }
+#line 278 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_dir_pattern_combo_changed (self);
+#line 251 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (pattern);
+#line 1759 "Preferences.c"
+}
+
+
+void preferences_dialog_show_preferences (void) {
+ PreferencesDialog* _tmp0_;
+ PreferencesDialog* _tmp2_;
+ PreferencesDialog* _tmp3_;
+ PreferencesDialog* _tmp4_;
+ GtkFileChooserButton* _tmp5_;
+ GFile* _tmp6_;
+ GFile* _tmp7_;
+ gchar* _tmp8_;
+ gchar* _tmp9_;
+ PreferencesDialog* _tmp10_;
+#line 282 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = preferences_dialog_preferences_dialog;
+#line 282 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp0_ == NULL) {
+#line 1778 "Preferences.c"
+ PreferencesDialog* _tmp1_;
+#line 283 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = preferences_dialog_new ();
+#line 283 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_object_ref_sink (_tmp1_);
+#line 283 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (preferences_dialog_preferences_dialog);
+#line 283 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_preferences_dialog = _tmp1_;
+#line 1788 "Preferences.c"
+ }
+#line 285 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = preferences_dialog_preferences_dialog;
+#line 285 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_populate_preference_options (_tmp2_);
+#line 286 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = preferences_dialog_preferences_dialog;
+#line 286 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, gtk_widget_get_type (), GtkWidget));
+#line 287 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = preferences_dialog_preferences_dialog;
+#line 287 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = _tmp4_->priv->library_dir_button;
+#line 287 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = app_dirs_get_import_dir ();
+#line 287 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = _tmp6_;
+#line 287 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = g_file_get_path (_tmp7_);
+#line 287 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = _tmp8_;
+#line 287 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_file_chooser_set_current_folder (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, GTK_TYPE_FILE_CHOOSER, GtkFileChooser), _tmp9_);
+#line 287 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp9_);
+#line 287 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp7_);
+#line 291 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp10_ = preferences_dialog_preferences_dialog;
+#line 291 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_window_present (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, gtk_window_get_type (), GtkWindow));
+#line 1820 "Preferences.c"
+}
+
+
+static void preferences_dialog_commit_on_close (PreferencesDialog* self) {
+ ConfigFacade* _tmp0_;
+ ConfigFacade* _tmp1_;
+ ConfigFacade* _tmp2_;
+ ConfigFacade* _tmp3_;
+ GtkCheckButton* _tmp4_;
+ gboolean _tmp5_;
+ gboolean _tmp6_;
+ ConfigFacade* _tmp7_;
+ ConfigFacade* _tmp8_;
+ GtkCheckButton* _tmp9_;
+ gboolean _tmp10_;
+ gboolean _tmp11_;
+ const gchar* _tmp12_;
+ PreferencesDialogPathFormat* pf = NULL;
+ GeeArrayList* _tmp14_;
+ GtkComboBoxText* _tmp15_;
+ gint _tmp16_;
+ gpointer _tmp17_;
+ PreferencesDialogPathFormat* _tmp18_;
+ const gchar* _tmp19_;
+#line 296 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 297 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = config_facade_get_instance ();
+#line 297 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = _tmp0_;
+#line 297 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ config_facade_commit_bg_color (_tmp1_);
+#line 297 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp1_);
+#line 298 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = config_facade_get_instance ();
+#line 298 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = _tmp2_;
+#line 298 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = self->priv->autoimport;
+#line 298 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 298 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = _tmp5_;
+#line 298 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_auto_import_from_library (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp6_);
+#line 298 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp3_);
+#line 299 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = config_facade_get_instance ();
+#line 299 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = _tmp7_;
+#line 299 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = self->priv->write_metadata;
+#line 299 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp10_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 299 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp11_ = _tmp10_;
+#line 299 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_commit_metadata_to_masters (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp11_);
+#line 299 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp8_);
+#line 301 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12_ = self->priv->lib_dir;
+#line 301 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp12_ != NULL) {
+#line 1887 "Preferences.c"
+ const gchar* _tmp13_;
+#line 302 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp13_ = self->priv->lib_dir;
+#line 302 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ app_dirs_set_import_dir (_tmp13_);
+#line 1893 "Preferences.c"
+ }
+#line 304 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp14_ = self->priv->path_formats;
+#line 304 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp15_ = self->priv->dir_pattern_combo;
+#line 304 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp16_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, gtk_combo_box_get_type (), GtkComboBox));
+#line 304 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp17_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp16_);
+#line 304 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ pf = (PreferencesDialogPathFormat*) _tmp17_;
+#line 305 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp18_ = pf;
+#line 305 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp19_ = _tmp18_->pattern;
+#line 305 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (NULL == _tmp19_) {
+#line 1911 "Preferences.c"
+ ConfigFacade* _tmp20_;
+ ConfigFacade* _tmp21_;
+ GtkEntry* _tmp22_;
+ const gchar* _tmp23_;
+ const gchar* _tmp24_;
+ ConfigFacade* _tmp25_;
+ ConfigFacade* _tmp26_;
+#line 306 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp20_ = config_facade_get_instance ();
+#line 306 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp21_ = _tmp20_;
+#line 306 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp22_ = self->priv->dir_pattern_entry;
+#line 306 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp23_ = gtk_entry_get_text (_tmp22_);
+#line 306 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp24_ = _tmp23_;
+#line 306 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_directory_pattern_custom (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp24_);
+#line 306 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp21_);
+#line 307 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp25_ = config_facade_get_instance ();
+#line 307 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp26_ = _tmp25_;
+#line 307 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_directory_pattern (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), NULL);
+#line 307 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp26_);
+#line 1941 "Preferences.c"
+ } else {
+ ConfigFacade* _tmp27_;
+ ConfigFacade* _tmp28_;
+ PreferencesDialogPathFormat* _tmp29_;
+ const gchar* _tmp30_;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp27_ = config_facade_get_instance ();
+#line 309 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp28_ = _tmp27_;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp29_ = pf;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp30_ = _tmp29_->pattern;
+#line 309 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_directory_pattern (G_TYPE_CHECK_INSTANCE_CAST (_tmp28_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp30_);
+#line 309 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp28_);
+#line 1959 "Preferences.c"
+ }
+#line 296 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _preferences_dialog_path_format_unref0 (pf);
+#line 1963 "Preferences.c"
+}
+
+
+static gboolean preferences_dialog_on_delete (PreferencesDialog* self) {
+ gboolean result = FALSE;
+ gboolean _tmp0_;
+ gboolean _tmp1_;
+#line 313 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (IS_PREFERENCES_DIALOG (self), FALSE);
+#line 314 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = preferences_dialog_get_allow_closing (self);
+#line 314 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (!_tmp0_) {
+#line 315 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ result = TRUE;
+#line 315 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 1981 "Preferences.c"
+ }
+#line 317 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_commit_on_close (self);
+#line 318 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = gtk_widget_hide_on_delete (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 318 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ result = _tmp1_;
+#line 318 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 1991 "Preferences.c"
+}
+
+
+static void preferences_dialog_on_close (PreferencesDialog* self) {
+ gboolean _tmp0_;
+#line 321 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 322 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = preferences_dialog_get_allow_closing (self);
+#line 322 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (!_tmp0_) {
+#line 323 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return;
+#line 2005 "Preferences.c"
+ }
+#line 325 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_hide (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 326 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_commit_on_close (self);
+#line 2011 "Preferences.c"
+}
+
+
+static void preferences_dialog_on_value_changed (PreferencesDialog* self) {
+ GtkAdjustment* _tmp0_;
+ gdouble _tmp1_;
+ GtkAdjustment* _tmp2_;
+ gdouble _tmp3_;
+#line 329 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 330 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = self->priv->bg_color_adjustment;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = gtk_adjustment_get_upper (_tmp0_);
+#line 330 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = self->priv->bg_color_adjustment;
+#line 330 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = gtk_adjustment_get_value (_tmp2_);
+#line 330 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_set_background_color (self, ((gdouble) (_tmp1_ - _tmp3_)) / 65535.0);
+#line 2032 "Preferences.c"
+}
+
+
+static gboolean preferences_dialog_on_bg_color_reset (PreferencesDialog* self, GdkEventButton* event) {
+ gboolean result = FALSE;
+ gboolean _tmp0_ = FALSE;
+ gboolean _tmp1_ = FALSE;
+ GdkEventButton* _tmp2_;
+ guint _tmp3_;
+#line 334 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (IS_PREFERENCES_DIALOG (self), FALSE);
+#line 334 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (event != NULL, FALSE);
+#line 335 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = event;
+#line 335 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = _tmp2_->button;
+#line 335 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp3_ == ((guint) 1)) {
+#line 2052 "Preferences.c"
+ GdkEventButton* _tmp4_;
+ GdkEventType _tmp5_;
+#line 335 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = event;
+#line 335 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = _tmp4_->type;
+#line 335 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = _tmp5_ == GDK_BUTTON_PRESS;
+#line 2061 "Preferences.c"
+ } else {
+#line 335 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = FALSE;
+#line 2065 "Preferences.c"
+ }
+#line 335 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp1_) {
+#line 2069 "Preferences.c"
+ GdkEventButton* _tmp6_;
+ GdkModifierType _tmp7_;
+ gboolean _tmp8_;
+#line 336 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = event;
+#line 336 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = _tmp6_->state;
+#line 336 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = has_only_key_modifier (_tmp7_, GDK_CONTROL_MASK);
+#line 336 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = _tmp8_;
+#line 2081 "Preferences.c"
+ } else {
+#line 335 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = FALSE;
+#line 2085 "Preferences.c"
+ }
+#line 335 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp0_) {
+#line 2089 "Preferences.c"
+ GtkScale* _tmp9_;
+ GtkAdjustment* _tmp10_;
+ gdouble _tmp11_;
+ GdkRGBA _tmp12_ = {0};
+ gdouble _tmp13_;
+#line 338 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = self->priv->bg_color_slider;
+#line 338 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp10_ = self->priv->bg_color_adjustment;
+#line 338 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp11_ = gtk_adjustment_get_upper (_tmp10_);
+#line 338 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ parse_color (CONFIG_FACADE_DEFAULT_BG_COLOR, &_tmp12_);
+#line 338 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp13_ = _tmp12_.red;
+#line 338 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_range_set_value (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_range_get_type (), GtkRange), _tmp11_ - (_tmp13_ * 65536.0f));
+#line 340 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_value_changed (self);
+#line 342 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ result = TRUE;
+#line 342 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 2113 "Preferences.c"
+ }
+#line 345 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ result = FALSE;
+#line 345 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 2119 "Preferences.c"
+}
+
+
+static void preferences_dialog_on_dir_pattern_combo_changed (PreferencesDialog* self) {
+ PreferencesDialogPathFormat* pf = NULL;
+ GeeArrayList* _tmp0_;
+ GtkComboBoxText* _tmp1_;
+ gint _tmp2_;
+ gpointer _tmp3_;
+ PreferencesDialogPathFormat* _tmp4_;
+ const gchar* _tmp5_;
+#line 348 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 349 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = self->priv->path_formats;
+#line 349 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = self->priv->dir_pattern_combo;
+#line 349 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_combo_box_get_type (), GtkComboBox));
+#line 349 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp2_);
+#line 349 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ pf = (PreferencesDialogPathFormat*) _tmp3_;
+#line 350 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = pf;
+#line 350 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = _tmp4_->pattern;
+#line 350 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (NULL == _tmp5_) {
+#line 2149 "Preferences.c"
+ gchar* dir_pattern = NULL;
+ ConfigFacade* _tmp6_;
+ ConfigFacade* _tmp7_;
+ gchar* _tmp8_;
+ gchar* _tmp9_;
+ const gchar* _tmp10_;
+ gboolean _tmp11_;
+ GtkEntry* _tmp13_;
+ const gchar* _tmp14_;
+ GtkEntry* _tmp15_;
+ GtkEntry* _tmp16_;
+#line 352 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = config_facade_get_instance ();
+#line 352 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = _tmp6_;
+#line 352 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = configuration_facade_get_directory_pattern_custom (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade));
+#line 352 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = _tmp8_;
+#line 352 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp7_);
+#line 352 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ dir_pattern = _tmp9_;
+#line 353 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp10_ = dir_pattern;
+#line 353 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp11_ = is_string_empty (_tmp10_);
+#line 353 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp11_) {
+#line 2179 "Preferences.c"
+ gchar* _tmp12_;
+#line 354 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12_ = g_strdup ("");
+#line 354 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (dir_pattern);
+#line 354 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ dir_pattern = _tmp12_;
+#line 2187 "Preferences.c"
+ }
+#line 355 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp13_ = self->priv->dir_pattern_entry;
+#line 355 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp14_ = dir_pattern;
+#line 355 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_entry_set_text (_tmp13_, _tmp14_);
+#line 356 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp15_ = self->priv->dir_pattern_entry;
+#line 356 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_object_set (_tmp15_, "editable", TRUE, NULL);
+#line 357 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp16_ = self->priv->dir_pattern_entry;
+#line 357 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, gtk_widget_get_type (), GtkWidget), TRUE);
+#line 350 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (dir_pattern);
+#line 2205 "Preferences.c"
+ } else {
+ GtkEntry* _tmp17_;
+ PreferencesDialogPathFormat* _tmp18_;
+ const gchar* _tmp19_;
+ GtkEntry* _tmp20_;
+ GtkEntry* _tmp21_;
+#line 359 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp17_ = self->priv->dir_pattern_entry;
+#line 359 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp18_ = pf;
+#line 359 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp19_ = _tmp18_->pattern;
+#line 359 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_entry_set_text (_tmp17_, _tmp19_);
+#line 360 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp20_ = self->priv->dir_pattern_entry;
+#line 360 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_object_set (_tmp20_, "editable", FALSE, NULL);
+#line 361 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp21_ = self->priv->dir_pattern_entry;
+#line 361 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 2228 "Preferences.c"
+ }
+#line 348 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _preferences_dialog_path_format_unref0 (pf);
+#line 2232 "Preferences.c"
+}
+
+
+static void preferences_dialog_on_dir_pattern_entry_changed (PreferencesDialog* self) {
+ gchar* example = NULL;
+ GDateTime* _tmp0_;
+ GtkEntry* _tmp1_;
+ const gchar* _tmp2_;
+ const gchar* _tmp3_;
+ gchar* _tmp4_;
+ gboolean _tmp5_ = FALSE;
+ const gchar* _tmp6_;
+ gboolean _tmp7_;
+#line 365 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 366 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = self->priv->example_date;
+#line 366 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = self->priv->dir_pattern_entry;
+#line 366 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = gtk_entry_get_text (_tmp1_);
+#line 366 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = _tmp2_;
+#line 366 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = g_date_time_format (_tmp0_, _tmp3_);
+#line 366 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ example = _tmp4_;
+#line 367 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = example;
+#line 367 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = is_string_empty (_tmp6_);
+#line 367 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp7_) {
+#line 2266 "Preferences.c"
+ GtkEntry* _tmp8_;
+ const gchar* _tmp9_;
+ const gchar* _tmp10_;
+ gboolean _tmp11_;
+#line 367 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = self->priv->dir_pattern_entry;
+#line 367 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = gtk_entry_get_text (_tmp8_);
+#line 367 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp10_ = _tmp9_;
+#line 367 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp11_ = is_string_empty (_tmp10_);
+#line 367 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = !_tmp11_;
+#line 2281 "Preferences.c"
+ } else {
+#line 367 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = FALSE;
+#line 2285 "Preferences.c"
+ }
+#line 367 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp5_) {
+#line 2289 "Preferences.c"
+ GtkLabel* _tmp12_;
+ GtkEntry* _tmp13_;
+ GtkEntry* _tmp14_;
+#line 369 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12_ = self->priv->dir_pattern_example;
+#line 369 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_label_set_text (_tmp12_, _ ("Invalid pattern"));
+#line 370 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp13_ = self->priv->dir_pattern_entry;
+#line 370 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_entry_set_icon_from_icon_name (_tmp13_, GTK_ENTRY_ICON_SECONDARY, "dialog-error");
+#line 371 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp14_ = self->priv->dir_pattern_entry;
+#line 371 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_entry_set_icon_activatable (_tmp14_, GTK_ENTRY_ICON_SECONDARY, FALSE);
+#line 372 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_set_allow_closing (self, FALSE);
+#line 2307 "Preferences.c"
+ } else {
+ GtkLabel* _tmp15_;
+ const gchar* _tmp16_;
+ GtkEntry* _tmp17_;
+#line 375 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp15_ = self->priv->dir_pattern_example;
+#line 375 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp16_ = example;
+#line 375 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_label_set_text (_tmp15_, _tmp16_);
+#line 376 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp17_ = self->priv->dir_pattern_entry;
+#line 376 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_entry_set_icon_from_icon_name (_tmp17_, GTK_ENTRY_ICON_SECONDARY, NULL);
+#line 377 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_set_allow_closing (self, TRUE);
+#line 2324 "Preferences.c"
+ }
+#line 365 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (example);
+#line 2328 "Preferences.c"
+}
+
+
+static void preferences_dialog_set_allow_closing (PreferencesDialog* self, gboolean allow) {
+ gboolean _tmp0_;
+ gboolean _tmp1_;
+#line 381 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 382 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = allow;
+#line 382 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_window_set_deletable (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), _tmp0_);
+#line 383 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = allow;
+#line 383 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->priv->allow_closing = _tmp1_;
+#line 2345 "Preferences.c"
+}
+
+
+static gboolean preferences_dialog_get_allow_closing (PreferencesDialog* self) {
+ gboolean result = FALSE;
+ gboolean _tmp0_;
+#line 386 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (IS_PREFERENCES_DIALOG (self), FALSE);
+#line 387 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = self->priv->allow_closing;
+#line 387 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ result = _tmp0_;
+#line 387 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 2360 "Preferences.c"
+}
+
+
+static void preferences_dialog_set_background_color (PreferencesDialog* self, gdouble bg_color_value) {
+ ConfigFacade* _tmp0_;
+ ConfigFacade* _tmp1_;
+ gdouble _tmp2_;
+ GdkRGBA _tmp3_ = {0};
+#line 390 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 391 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = config_facade_get_instance ();
+#line 391 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = _tmp0_;
+#line 391 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = bg_color_value;
+#line 391 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_to_grayscale (self, _tmp2_, &_tmp3_);
+#line 391 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ config_facade_set_bg_color (_tmp1_, &_tmp3_);
+#line 391 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp1_);
+#line 2383 "Preferences.c"
+}
+
+
+static void preferences_dialog_to_grayscale (PreferencesDialog* self, gdouble color_value, GdkRGBA* result) {
+ GdkRGBA color = {0};
+ gdouble _tmp0_;
+ gdouble _tmp1_;
+ gdouble _tmp2_;
+#line 394 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 395 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ memset (&color, 0, sizeof (GdkRGBA));
+#line 397 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = color_value;
+#line 397 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ color.red = _tmp0_;
+#line 398 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = color_value;
+#line 398 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ color.green = _tmp1_;
+#line 399 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = color_value;
+#line 399 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ color.blue = _tmp2_;
+#line 400 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ color.alpha = 1.0;
+#line 402 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ *result = color;
+#line 402 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return;
+#line 2414 "Preferences.c"
+}
+
+
+static void preferences_dialog_on_photo_editor_changed (PreferencesDialog* self) {
+ gint _tmp0_ = 0;
+ GtkComboBox* _tmp1_;
+ gint _tmp2_;
+ SortedList* _tmp3_;
+ gint _tmp4_;
+ gint _tmp5_;
+ gint photo_app_choice_index = 0;
+ GAppInfo* app = NULL;
+ SortedList* _tmp11_;
+ gpointer _tmp12_;
+ ConfigFacade* _tmp13_;
+ ConfigFacade* _tmp14_;
+ gchar* _tmp15_;
+ gchar* _tmp16_;
+ gchar* _tmp17_;
+ gchar* _tmp18_;
+#line 405 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 406 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = self->priv->photo_editor_combo;
+#line 406 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = gtk_combo_box_get_active (_tmp1_);
+#line 406 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = self->priv->external_photo_apps;
+#line 406 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 406 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = _tmp4_;
+#line 406 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp2_ < _tmp5_) {
+#line 2449 "Preferences.c"
+ GtkComboBox* _tmp6_;
+ gint _tmp7_;
+#line 407 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = self->priv->photo_editor_combo;
+#line 407 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = gtk_combo_box_get_active (_tmp6_);
+#line 407 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = _tmp7_;
+#line 2458 "Preferences.c"
+ } else {
+ SortedList* _tmp8_;
+ gint _tmp9_;
+ gint _tmp10_;
+#line 407 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = self->priv->external_photo_apps;
+#line 407 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 407 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp10_ = _tmp9_;
+#line 407 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = _tmp10_;
+#line 2471 "Preferences.c"
+ }
+#line 406 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ photo_app_choice_index = _tmp0_;
+#line 409 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp11_ = self->priv->external_photo_apps;
+#line 409 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12_ = sorted_list_get_at (_tmp11_, photo_app_choice_index);
+#line 409 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ app = (GAppInfo*) _tmp12_;
+#line 411 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp13_ = config_facade_get_instance ();
+#line 411 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp14_ = _tmp13_;
+#line 411 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp15_ = desktop_integration_get_app_open_command (app);
+#line 411 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp16_ = _tmp15_;
+#line 411 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_external_photo_app (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp16_);
+#line 411 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp16_);
+#line 411 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp14_);
+#line 413 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp17_ = desktop_integration_get_app_open_command (app);
+#line 413 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp18_ = _tmp17_;
+#line 413 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_debug ("Preferences.vala:413: setting external photo editor to: %s", _tmp18_);
+#line 413 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (_tmp18_);
+#line 405 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (app);
+#line 2505 "Preferences.c"
+}
+
+
+static void preferences_dialog_on_raw_editor_changed (PreferencesDialog* self) {
+ gint _tmp0_ = 0;
+ GtkComboBox* _tmp1_;
+ gint _tmp2_;
+ SortedList* _tmp3_;
+ gint _tmp4_;
+ gint _tmp5_;
+ gint raw_app_choice_index = 0;
+ GAppInfo* app = NULL;
+ SortedList* _tmp11_;
+ gpointer _tmp12_;
+ ConfigFacade* _tmp13_;
+ ConfigFacade* _tmp14_;
+ const gchar* _tmp15_;
+ const gchar* _tmp16_;
+#line 416 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 417 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = self->priv->raw_editor_combo;
+#line 417 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = gtk_combo_box_get_active (_tmp1_);
+#line 417 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = self->priv->external_raw_apps;
+#line 417 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 417 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = _tmp4_;
+#line 417 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp2_ < _tmp5_) {
+#line 2538 "Preferences.c"
+ GtkComboBox* _tmp6_;
+ gint _tmp7_;
+#line 418 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp6_ = self->priv->raw_editor_combo;
+#line 418 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp7_ = gtk_combo_box_get_active (_tmp6_);
+#line 418 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = _tmp7_;
+#line 2547 "Preferences.c"
+ } else {
+ SortedList* _tmp8_;
+ gint _tmp9_;
+ gint _tmp10_;
+#line 418 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp8_ = self->priv->external_raw_apps;
+#line 418 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp9_ = gee_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GEE_TYPE_COLLECTION, GeeCollection));
+#line 418 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp10_ = _tmp9_;
+#line 418 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = _tmp10_;
+#line 2560 "Preferences.c"
+ }
+#line 417 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ raw_app_choice_index = _tmp0_;
+#line 420 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp11_ = self->priv->external_raw_apps;
+#line 420 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp12_ = sorted_list_get_at (_tmp11_, raw_app_choice_index);
+#line 420 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ app = (GAppInfo*) _tmp12_;
+#line 422 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp13_ = config_facade_get_instance ();
+#line 422 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp14_ = _tmp13_;
+#line 422 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp15_ = g_app_info_get_commandline (app);
+#line 422 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_external_raw_app (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp15_);
+#line 422 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp14_);
+#line 424 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp16_ = g_app_info_get_commandline (app);
+#line 424 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_debug ("Preferences.vala:424: setting external raw editor to: %s", _tmp16_);
+#line 416 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (app);
+#line 2586 "Preferences.c"
+}
+
+
+static RawDeveloper preferences_dialog_raw_developer_from_combo (PreferencesDialog* self) {
+ RawDeveloper result = 0;
+ GtkComboBoxText* _tmp0_;
+ gint _tmp1_;
+#line 427 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (IS_PREFERENCES_DIALOG (self), 0);
+#line 428 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = self->priv->default_raw_developer_combo;
+#line 428 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = gtk_combo_box_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, gtk_combo_box_get_type (), GtkComboBox));
+#line 428 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp1_ == 0) {
+#line 429 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ result = RAW_DEVELOPER_CAMERA;
+#line 429 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 2606 "Preferences.c"
+ }
+#line 430 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ result = RAW_DEVELOPER_SHOTWELL;
+#line 430 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 2612 "Preferences.c"
+}
+
+
+static void preferences_dialog_set_raw_developer_combo (PreferencesDialog* self, RawDeveloper d) {
+ RawDeveloper _tmp0_;
+#line 433 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 434 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = d;
+#line 434 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (_tmp0_ == RAW_DEVELOPER_CAMERA) {
+#line 2624 "Preferences.c"
+ GtkComboBoxText* _tmp1_;
+#line 435 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = self->priv->default_raw_developer_combo;
+#line 435 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_combo_box_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_combo_box_get_type (), GtkComboBox), 0);
+#line 2630 "Preferences.c"
+ } else {
+ GtkComboBoxText* _tmp2_;
+#line 437 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = self->priv->default_raw_developer_combo;
+#line 437 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_combo_box_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_combo_box_get_type (), GtkComboBox), 1);
+#line 2637 "Preferences.c"
+ }
+}
+
+
+static void preferences_dialog_on_default_raw_developer_changed (PreferencesDialog* self) {
+ ConfigFacade* _tmp0_;
+ ConfigFacade* _tmp1_;
+ RawDeveloper _tmp2_;
+#line 440 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 441 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = config_facade_get_instance ();
+#line 441 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = _tmp0_;
+#line 441 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = preferences_dialog_raw_developer_from_combo (self);
+#line 441 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_default_raw_developer (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp2_);
+#line 441 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp1_);
+#line 2658 "Preferences.c"
+}
+
+
+static void preferences_dialog_on_current_folder_changed (PreferencesDialog* self) {
+ GtkFileChooserButton* _tmp0_;
+ gchar* _tmp1_;
+#line 444 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 445 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = self->priv->library_dir_button;
+#line 445 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = gtk_file_chooser_get_filename (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GTK_TYPE_FILE_CHOOSER, GtkFileChooser));
+#line 445 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (self->priv->lib_dir);
+#line 445 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->priv->lib_dir = _tmp1_;
+#line 2675 "Preferences.c"
+}
+
+
+static void _preferences_dialog_on_current_folder_changed_gtk_file_chooser_current_folder_changed (GtkFileChooser* _sender, gpointer self) {
+#line 454 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_on_current_folder_changed ((PreferencesDialog*) self);
+#line 2682 "Preferences.c"
+}
+
+
+static gboolean preferences_dialog_real_map_event (GtkWidget* base, GdkEventAny* event) {
+ PreferencesDialog * self;
+ gboolean result = FALSE;
+ gboolean _result_ = FALSE;
+ GdkEventAny* _tmp0_;
+ gboolean _tmp1_;
+ GtkFileChooserButton* _tmp2_;
+#line 448 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_PREFERENCES_DIALOG, PreferencesDialog);
+#line 448 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (event != NULL, FALSE);
+#line 449 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = event;
+#line 449 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = GTK_WIDGET_CLASS (preferences_dialog_parent_class)->map_event (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), gtk_widget_get_type (), GtkWidget), _tmp0_);
+#line 449 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _result_ = _tmp1_;
+#line 454 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = self->priv->library_dir_button;
+#line 454 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GTK_TYPE_FILE_CHOOSER, GtkFileChooser), "current-folder-changed", (GCallback) _preferences_dialog_on_current_folder_changed_gtk_file_chooser_current_folder_changed, self, 0);
+#line 456 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ result = _result_;
+#line 456 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return result;
+#line 2711 "Preferences.c"
+}
+
+
+static void preferences_dialog_add_to_dir_formats (PreferencesDialog* self, const gchar* name, const gchar* pattern) {
+ PreferencesDialogPathFormat* pf = NULL;
+ const gchar* _tmp0_;
+ const gchar* _tmp1_;
+ PreferencesDialogPathFormat* _tmp2_;
+ GeeArrayList* _tmp3_;
+ GtkComboBoxText* _tmp4_;
+ const gchar* _tmp5_;
+#line 459 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 459 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (name != NULL);
+#line 460 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = name;
+#line 460 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = pattern;
+#line 460 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = preferences_dialog_path_format_new (_tmp0_, _tmp1_);
+#line 460 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ pf = _tmp2_;
+#line 461 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = self->priv->path_formats;
+#line 461 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), pf);
+#line 462 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp4_ = self->priv->dir_pattern_combo;
+#line 462 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp5_ = name;
+#line 462 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_combo_box_text_append_text (_tmp4_, _tmp5_);
+#line 459 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _preferences_dialog_path_format_unref0 (pf);
+#line 2747 "Preferences.c"
+}
+
+
+static void preferences_dialog_on_lowercase_toggled (PreferencesDialog* self) {
+ ConfigFacade* _tmp0_;
+ ConfigFacade* _tmp1_;
+ GtkCheckButton* _tmp2_;
+ gboolean _tmp3_;
+#line 465 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (IS_PREFERENCES_DIALOG (self));
+#line 466 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = config_facade_get_instance ();
+#line 466 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = _tmp0_;
+#line 466 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = self->priv->lowercase;
+#line 466 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 466 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ configuration_facade_set_use_lowercase_filenames (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_CONFIGURATION_FACADE, ConfigurationFacade), _tmp3_);
+#line 466 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (_tmp1_);
+#line 2770 "Preferences.c"
+}
+
+
+static PreferencesDialogPathFormat* preferences_dialog_path_format_construct (GType object_type, const gchar* name, const gchar* pattern) {
+ PreferencesDialogPathFormat* self = NULL;
+ const gchar* _tmp0_;
+ gchar* _tmp1_;
+ const gchar* _tmp2_;
+ gchar* _tmp3_;
+#line 11 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (name != NULL, NULL);
+#line 11 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self = (PreferencesDialogPathFormat*) g_type_create_instance (object_type);
+#line 12 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = name;
+#line 12 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = g_strdup (_tmp0_);
+#line 12 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (self->name);
+#line 12 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->name = _tmp1_;
+#line 13 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = pattern;
+#line 13 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp3_ = g_strdup (_tmp2_);
+#line 13 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (self->pattern);
+#line 13 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->pattern = _tmp3_;
+#line 11 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return self;
+#line 2802 "Preferences.c"
+}
+
+
+static PreferencesDialogPathFormat* preferences_dialog_path_format_new (const gchar* name, const gchar* pattern) {
+#line 11 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return preferences_dialog_path_format_construct (PREFERENCES_DIALOG_TYPE_PATH_FORMAT, name, pattern);
+#line 2809 "Preferences.c"
+}
+
+
+static void preferences_dialog_value_path_format_init (GValue* value) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ value->data[0].v_pointer = NULL;
+#line 2816 "Preferences.c"
+}
+
+
+static void preferences_dialog_value_path_format_free_value (GValue* value) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (value->data[0].v_pointer) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_path_format_unref (value->data[0].v_pointer);
+#line 2825 "Preferences.c"
+ }
+}
+
+
+static void preferences_dialog_value_path_format_copy_value (const GValue* src_value, GValue* dest_value) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (src_value->data[0].v_pointer) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ dest_value->data[0].v_pointer = preferences_dialog_path_format_ref (src_value->data[0].v_pointer);
+#line 2835 "Preferences.c"
+ } else {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ dest_value->data[0].v_pointer = NULL;
+#line 2839 "Preferences.c"
+ }
+}
+
+
+static gpointer preferences_dialog_value_path_format_peek_pointer (const GValue* value) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return value->data[0].v_pointer;
+#line 2847 "Preferences.c"
+}
+
+
+static gchar* preferences_dialog_value_path_format_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (collect_values[0].v_pointer) {
+#line 2854 "Preferences.c"
+ PreferencesDialogPathFormat * object;
+ object = collect_values[0].v_pointer;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (object->parent_instance.g_class == NULL) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+#line 2861 "Preferences.c"
+ } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+#line 2865 "Preferences.c"
+ }
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ value->data[0].v_pointer = preferences_dialog_path_format_ref (object);
+#line 2869 "Preferences.c"
+ } else {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ value->data[0].v_pointer = NULL;
+#line 2873 "Preferences.c"
+ }
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return NULL;
+#line 2877 "Preferences.c"
+}
+
+
+static gchar* preferences_dialog_value_path_format_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+ PreferencesDialogPathFormat ** object_p;
+ object_p = collect_values[0].v_pointer;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (!object_p) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
+#line 2888 "Preferences.c"
+ }
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (!value->data[0].v_pointer) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ *object_p = NULL;
+#line 2894 "Preferences.c"
+ } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ *object_p = value->data[0].v_pointer;
+#line 2898 "Preferences.c"
+ } else {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ *object_p = preferences_dialog_path_format_ref (value->data[0].v_pointer);
+#line 2902 "Preferences.c"
+ }
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return NULL;
+#line 2906 "Preferences.c"
+}
+
+
+static GParamSpec* preferences_dialog_param_spec_path_format (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
+ PreferencesDialogParamSpecPathFormat* spec;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (g_type_is_a (object_type, PREFERENCES_DIALOG_TYPE_PATH_FORMAT), NULL);
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ G_PARAM_SPEC (spec)->value_type = object_type;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return G_PARAM_SPEC (spec);
+#line 2920 "Preferences.c"
+}
+
+
+static gpointer preferences_dialog_value_get_path_format (const GValue* value) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PREFERENCES_DIALOG_TYPE_PATH_FORMAT), NULL);
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return value->data[0].v_pointer;
+#line 2929 "Preferences.c"
+}
+
+
+static void preferences_dialog_value_set_path_format (GValue* value, gpointer v_object) {
+ PreferencesDialogPathFormat * old;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PREFERENCES_DIALOG_TYPE_PATH_FORMAT));
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ old = value->data[0].v_pointer;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (v_object) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PREFERENCES_DIALOG_TYPE_PATH_FORMAT));
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ value->data[0].v_pointer = v_object;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_path_format_ref (value->data[0].v_pointer);
+#line 2949 "Preferences.c"
+ } else {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ value->data[0].v_pointer = NULL;
+#line 2953 "Preferences.c"
+ }
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (old) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_path_format_unref (old);
+#line 2959 "Preferences.c"
+ }
+}
+
+
+static void preferences_dialog_value_take_path_format (GValue* value, gpointer v_object) {
+ PreferencesDialogPathFormat * old;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, PREFERENCES_DIALOG_TYPE_PATH_FORMAT));
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ old = value->data[0].v_pointer;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (v_object) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, PREFERENCES_DIALOG_TYPE_PATH_FORMAT));
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ value->data[0].v_pointer = v_object;
+#line 2978 "Preferences.c"
+ } else {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ value->data[0].v_pointer = NULL;
+#line 2982 "Preferences.c"
+ }
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (old) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_path_format_unref (old);
+#line 2988 "Preferences.c"
+ }
+}
+
+
+static void preferences_dialog_path_format_class_init (PreferencesDialogPathFormatClass * klass) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_path_format_parent_class = g_type_class_peek_parent (klass);
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ ((PreferencesDialogPathFormatClass *) klass)->finalize = preferences_dialog_path_format_finalize;
+#line 2998 "Preferences.c"
+}
+
+
+static void preferences_dialog_path_format_instance_init (PreferencesDialogPathFormat * self) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->ref_count = 1;
+#line 3005 "Preferences.c"
+}
+
+
+static void preferences_dialog_path_format_finalize (PreferencesDialogPathFormat * obj) {
+ PreferencesDialogPathFormat * self;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, PREFERENCES_DIALOG_TYPE_PATH_FORMAT, PreferencesDialogPathFormat);
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_signal_handlers_destroy (self);
+#line 15 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (self->name);
+#line 16 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (self->pattern);
+#line 3019 "Preferences.c"
+}
+
+
+static GType preferences_dialog_path_format_get_type (void) {
+ static volatile gsize preferences_dialog_path_format_type_id__volatile = 0;
+ if (g_once_init_enter (&preferences_dialog_path_format_type_id__volatile)) {
+ static const GTypeValueTable g_define_type_value_table = { preferences_dialog_value_path_format_init, preferences_dialog_value_path_format_free_value, preferences_dialog_value_path_format_copy_value, preferences_dialog_value_path_format_peek_pointer, "p", preferences_dialog_value_path_format_collect_value, "p", preferences_dialog_value_path_format_lcopy_value };
+ static const GTypeInfo g_define_type_info = { sizeof (PreferencesDialogPathFormatClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) preferences_dialog_path_format_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PreferencesDialogPathFormat), 0, (GInstanceInitFunc) preferences_dialog_path_format_instance_init, &g_define_type_value_table };
+ static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
+ GType preferences_dialog_path_format_type_id;
+ preferences_dialog_path_format_type_id = g_type_register_fundamental (g_type_fundamental_next (), "PreferencesDialogPathFormat", &g_define_type_info, &g_define_type_fundamental_info, 0);
+ g_once_init_leave (&preferences_dialog_path_format_type_id__volatile, preferences_dialog_path_format_type_id);
+ }
+ return preferences_dialog_path_format_type_id__volatile;
+}
+
+
+static gpointer preferences_dialog_path_format_ref (gpointer instance) {
+ PreferencesDialogPathFormat * self;
+ self = instance;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_atomic_int_inc (&self->ref_count);
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ return instance;
+#line 3044 "Preferences.c"
+}
+
+
+static void preferences_dialog_path_format_unref (gpointer instance) {
+ PreferencesDialogPathFormat * self;
+ self = instance;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ if (g_atomic_int_dec_and_test (&self->ref_count)) {
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ PREFERENCES_DIALOG_PATH_FORMAT_GET_CLASS (self)->finalize (self);
+#line 10 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_type_free_instance ((GTypeInstance *) self);
+#line 3057 "Preferences.c"
+ }
+}
+
+
+static void preferences_dialog_class_init (PreferencesDialogClass * klass) {
+ gint PreferencesDialog_private_offset;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ preferences_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_type_class_add_private (klass, sizeof (PreferencesDialogPrivate));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ ((GtkWidgetClass *) klass)->map_event = (gboolean (*) (GtkWidget *, GdkEventAny*)) preferences_dialog_real_map_event;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ G_OBJECT_CLASS (klass)->finalize = preferences_dialog_finalize;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ PreferencesDialog_private_offset = g_type_class_get_instance_private_offset (klass);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/Shotwell/ui/preferences_dialog.ui");
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "bg_color_adjustment", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, bg_color_adjustment));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "bg_color_slider", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, bg_color_slider));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "photo_editor_combo", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, photo_editor_combo));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "raw_editor_combo", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, raw_editor_combo));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "library_dir_button", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, library_dir_button));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "dir_pattern_combo", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, dir_pattern_combo));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "dir_pattern_entry", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, dir_pattern_entry));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "dir_pattern_example", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, dir_pattern_example));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "lowercase", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, lowercase));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "default_raw_developer_combo", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, default_raw_developer_combo));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "autoimport", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, autoimport));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "write_metadata", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, write_metadata));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "pattern_help", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, pattern_help));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "preferences_notebook", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, preferences_notebook));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "transparent_checker_radio", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, transparent_checker_radio));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "transparent_solid_radio", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, transparent_solid_radio));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "transparent_solid_color", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, transparent_solid_color));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "transparent_none_radio", FALSE, PreferencesDialog_private_offset + G_STRUCT_OFFSET (PreferencesDialogPrivate, transparent_none_radio));
+#line 3112 "Preferences.c"
+}
+
+
+static void preferences_dialog_instance_init (PreferencesDialog * self) {
+ GeeArrayList* _tmp0_;
+ GDateTime* _tmp1_;
+ PluginsManifestWidgetMediator* _tmp2_;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->priv = PREFERENCES_DIALOG_GET_PRIVATE (self);
+#line 39 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->priv->allow_closing = FALSE;
+#line 40 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->priv->lib_dir = NULL;
+#line 41 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp0_ = gee_array_list_new (PREFERENCES_DIALOG_TYPE_PATH_FORMAT, (GBoxedCopyFunc) preferences_dialog_path_format_ref, (GDestroyNotify) preferences_dialog_path_format_unref, NULL, NULL, NULL);
+#line 41 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->priv->path_formats = _tmp0_;
+#line 42 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp1_ = g_date_time_new_local (2009, 3, 10, 18, 16, (gdouble) 11);
+#line 42 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->priv->example_date = _tmp1_;
+#line 45 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _tmp2_ = plugins_manifest_widget_mediator_new ();
+#line 45 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ g_object_ref_sink (_tmp2_);
+#line 45 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self->priv->plugins_mediator = _tmp2_;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ gtk_widget_init_template (GTK_WIDGET (self));
+#line 3142 "Preferences.c"
+}
+
+
+static void preferences_dialog_finalize (GObject * obj) {
+ PreferencesDialog * self;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PREFERENCES_DIALOG, PreferencesDialog);
+#line 22 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->bg_color_adjustment);
+#line 24 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->bg_color_slider);
+#line 26 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->photo_editor_combo);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->raw_editor_combo);
+#line 29 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->external_raw_apps);
+#line 30 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->external_photo_apps);
+#line 32 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->library_dir_button);
+#line 34 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->dir_pattern_combo);
+#line 36 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->dir_pattern_entry);
+#line 38 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->dir_pattern_example);
+#line 40 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_free0 (self->priv->lib_dir);
+#line 41 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->path_formats);
+#line 42 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_date_time_unref0 (self->priv->example_date);
+#line 44 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->lowercase);
+#line 45 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->plugins_mediator);
+#line 47 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->default_raw_developer_combo);
+#line 50 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->autoimport);
+#line 52 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->write_metadata);
+#line 54 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->pattern_help);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->preferences_notebook);
+#line 59 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->transparent_checker_radio);
+#line 61 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->transparent_solid_radio);
+#line 63 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->transparent_solid_color);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ _g_object_unref0 (self->priv->transparent_none_radio);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/Preferences.vala"
+ G_OBJECT_CLASS (preferences_dialog_parent_class)->finalize (obj);
+#line 3200 "Preferences.c"
+}
+
+
+GType preferences_dialog_get_type (void) {
+ static volatile gsize preferences_dialog_type_id__volatile = 0;
+ if (g_once_init_enter (&preferences_dialog_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (PreferencesDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) preferences_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PreferencesDialog), 0, (GInstanceInitFunc) preferences_dialog_instance_init, NULL };
+ GType preferences_dialog_type_id;
+ preferences_dialog_type_id = g_type_register_static (gtk_dialog_get_type (), "PreferencesDialog", &g_define_type_info, 0);
+ g_once_init_leave (&preferences_dialog_type_id__volatile, preferences_dialog_type_id);
+ }
+ return preferences_dialog_type_id__volatile;
+}
+
+
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+ if ((array != NULL) && (destroy_func != NULL)) {
+ int i;
+ for (i = 0; i < array_length; i = i + 1) {
+ if (((gpointer*) array)[i] != NULL) {
+ destroy_func (((gpointer*) array)[i]);
+ }
+ }
+ }
+}
+
+
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+ _vala_array_destroy (array, array_length, destroy_func);
+ g_free (array);
+}
+
+
+static gint _vala_array_length (gpointer array) {
+ int length;
+ length = 0;
+ if (array) {
+ while (((gpointer*) array)[length]) {
+ length++;
+ }
+ }
+ return length;
+}
+
+
+
diff --git a/src/dialogs/Preferences.vala b/src/dialogs/Preferences.vala
new file mode 100644
index 0000000..0a18547
--- /dev/null
+++ b/src/dialogs/Preferences.vala
@@ -0,0 +1,468 @@
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+[GtkTemplate (ui = "/org/gnome/Shotwell/ui/preferences_dialog.ui")]
+public class PreferencesDialog : Gtk.Dialog {
+ private class PathFormat {
+ public PathFormat(string name, string? pattern) {
+ this.name = name;
+ this.pattern = pattern;
+ }
+ public string name;
+ public string? pattern;
+ }
+
+ private static PreferencesDialog preferences_dialog;
+
+ [GtkChild]
+ private Gtk.Adjustment bg_color_adjustment;
+ [GtkChild]
+ private Gtk.Scale bg_color_slider;
+ [GtkChild]
+ private Gtk.ComboBox photo_editor_combo;
+ [GtkChild]
+ private Gtk.ComboBox raw_editor_combo;
+ private SortedList<AppInfo> external_raw_apps;
+ private SortedList<AppInfo> external_photo_apps;
+ [GtkChild]
+ private Gtk.FileChooserButton library_dir_button;
+ [GtkChild]
+ private Gtk.ComboBoxText dir_pattern_combo;
+ [GtkChild]
+ private Gtk.Entry dir_pattern_entry;
+ [GtkChild]
+ private Gtk.Label dir_pattern_example;
+ private bool allow_closing = false;
+ private string? lib_dir = null;
+ private Gee.ArrayList<PathFormat> path_formats = new Gee.ArrayList<PathFormat>();
+ private GLib.DateTime example_date = new GLib.DateTime.local(2009, 3, 10, 18, 16, 11);
+ [GtkChild]
+ private Gtk.CheckButton lowercase;
+ private Plugins.ManifestWidgetMediator plugins_mediator = new Plugins.ManifestWidgetMediator();
+ [GtkChild]
+ private Gtk.ComboBoxText default_raw_developer_combo;
+
+ [GtkChild]
+ private Gtk.CheckButton autoimport;
+ [GtkChild]
+ private Gtk.CheckButton write_metadata;
+ [GtkChild]
+ private Gtk.Label pattern_help;
+ [GtkChild]
+ private Gtk.Notebook preferences_notebook;
+
+ [GtkChild]
+ private Gtk.RadioButton transparent_checker_radio;
+ [GtkChild]
+ private Gtk.RadioButton transparent_solid_radio;
+ [GtkChild]
+ private Gtk.ColorButton transparent_solid_color;
+ [GtkChild]
+ private Gtk.RadioButton transparent_none_radio;
+
+ private PreferencesDialog() {
+ Object (use_header_bar: Resources.use_header_bar());
+
+ set_parent_window(AppWindow.get_instance().get_parent_window());
+ set_transient_for(AppWindow.get_instance());
+ delete_event.connect(on_delete);
+ response.connect(on_close);
+
+ bg_color_adjustment.set_value(bg_color_adjustment.get_upper() -
+ (Config.Facade.get_instance().get_bg_color().red * 65535.0));
+ bg_color_adjustment.value_changed.connect(on_value_changed);
+
+ bg_color_slider.button_press_event.connect(on_bg_color_reset);
+
+ transparent_checker_radio.toggled.connect(on_radio_changed);
+ transparent_solid_radio.toggled.connect(on_radio_changed);
+ transparent_none_radio.toggled.connect(on_radio_changed);
+
+ transparent_solid_radio.bind_property("active",
+ transparent_solid_color,
+ "sensitive");
+
+ Gdk.RGBA color = Gdk.RGBA();
+ color.parse(Config.Facade.get_instance().get_transparent_background_color());
+ (transparent_solid_color as Gtk.ColorChooser).rgba = color;
+ transparent_solid_color.color_set.connect(on_color_changed);
+
+ switch (Config.Facade.get_instance().get_transparent_background_type()) {
+ case "checkered":
+ transparent_checker_radio.active = true;
+ break;
+ case "solid":
+ transparent_solid_radio.active = true;
+ break;
+ default:
+ transparent_none_radio.active = true;
+ break;
+ }
+
+ // Ticket #3162 - Move dir pattern blurb into Gnome help.
+ // Because specifying a particular snippet of the help requires
+ // us to know where its located, we can't hardcode a URL anymore;
+ // instead, we ask for the help path, and if we find it, we tell
+ // yelp to read from there, otherwise, we read from system-wide.
+ string help_path = Resources.get_help_path();
+
+ if (help_path == null) {
+ // We're installed system-wide, so use the system help.
+ pattern_help.set_markup("<a href=\"" + Resources.DIR_PATTERN_URI_SYSWIDE + "\">" + _("(Help)") + "</a>");
+ } else {
+ // We're being run from the build directory; we'll have to handle clicks to this
+ // link manually ourselves, due to a limitation of help: URIs.
+ pattern_help.set_markup("<a href=\"dummy:\">" + _("(Help)") + "</a>");
+ pattern_help.activate_link.connect(on_local_pattern_help);
+ }
+
+ add_to_dir_formats(_("Year%sMonth%sDay").printf(Path.DIR_SEPARATOR_S, Path.DIR_SEPARATOR_S),
+ "%Y" + Path.DIR_SEPARATOR_S + "%m" + Path.DIR_SEPARATOR_S + "%d");
+ add_to_dir_formats(_("Year%sMonth").printf(Path.DIR_SEPARATOR_S), "%Y" +
+ Path.DIR_SEPARATOR_S + "%m");
+ add_to_dir_formats(_("Year%sMonth-Day").printf(Path.DIR_SEPARATOR_S),
+ "%Y" + Path.DIR_SEPARATOR_S + "%m-%d");
+ add_to_dir_formats(_("Year-Month-Day"), "%Y-%m-%d");
+ add_to_dir_formats(_("Custom"), null); // Custom must always be last.
+ dir_pattern_combo.changed.connect(on_dir_pattern_combo_changed);
+ dir_pattern_entry.changed.connect(on_dir_pattern_entry_changed);
+
+ lowercase.toggled.connect(on_lowercase_toggled);
+
+ (preferences_notebook.get_nth_page (2) as Gtk.Container).add (plugins_mediator);
+
+ populate_preference_options();
+
+ photo_editor_combo.changed.connect(on_photo_editor_changed);
+ raw_editor_combo.changed.connect(on_raw_editor_changed);
+
+ autoimport.set_active(Config.Facade.get_instance().get_auto_import_from_library());
+
+ write_metadata.set_active(Config.Facade.get_instance().get_commit_metadata_to_masters());
+
+ default_raw_developer_combo.append_text(RawDeveloper.CAMERA.get_label());
+ default_raw_developer_combo.append_text(RawDeveloper.SHOTWELL.get_label());
+ set_raw_developer_combo(Config.Facade.get_instance().get_default_raw_developer());
+ default_raw_developer_combo.changed.connect(on_default_raw_developer_changed);
+ }
+
+ public void populate_preference_options() {
+ populate_app_combo_box(photo_editor_combo, PhotoFileFormat.get_editable_mime_types(),
+ Config.Facade.get_instance().get_external_photo_app(), out external_photo_apps);
+
+ populate_app_combo_box(raw_editor_combo, PhotoFileFormat.RAW.get_mime_types(),
+ Config.Facade.get_instance().get_external_raw_app(), out external_raw_apps);
+
+ setup_dir_pattern(dir_pattern_combo, dir_pattern_entry);
+
+ lowercase.set_active(Config.Facade.get_instance().get_use_lowercase_filenames());
+ }
+
+ private void on_radio_changed() {
+ var config = Config.Facade.get_instance();
+
+ if (transparent_checker_radio.active) {
+ config.set_transparent_background_type("checkered");
+ } else if (transparent_solid_radio.active) {
+ config.set_transparent_background_type("solid");
+ } else {
+ config.set_transparent_background_type("none");
+ }
+ }
+
+ private void on_color_changed() {
+ var color = (transparent_solid_color as Gtk.ColorChooser).rgba.to_string();
+ Config.Facade.get_instance().set_transparent_background_color(color);
+ }
+
+ // Ticket #3162, part II - if we're not yet installed, then we have to manually launch
+ // the help viewer and specify the full path to the subsection we want...
+ private bool on_local_pattern_help(string ignore) {
+ try {
+ Resources.launch_help(AppWindow.get_instance().get_screen(), "other-files.page");
+ } catch (Error e) {
+ message("Unable to launch help: %s", e.message);
+ }
+ return true;
+ }
+
+ private void populate_app_combo_box(Gtk.ComboBox combo_box, string[] mime_types,
+ string current_app_executable, out SortedList<AppInfo> external_apps) {
+ // get list of all applications for the given mime types
+ assert(mime_types.length != 0);
+ external_apps = DesktopIntegration.get_apps_for_mime_types(mime_types);
+
+ if (external_apps.size == 0)
+ return;
+
+ // populate application ComboBox with app names and icons
+ Gtk.CellRendererPixbuf pixbuf_renderer = new Gtk.CellRendererPixbuf();
+ Gtk.CellRendererText text_renderer = new Gtk.CellRendererText();
+ combo_box.clear();
+ combo_box.pack_start(pixbuf_renderer, false);
+ combo_box.pack_start(text_renderer, false);
+ combo_box.add_attribute(pixbuf_renderer, "pixbuf", 0);
+ combo_box.add_attribute(text_renderer, "text", 1);
+
+ // TODO: need more space between icons and text
+ Gtk.ListStore combo_store = new Gtk.ListStore(2, typeof(Gdk.Pixbuf), typeof(string));
+ Gtk.TreeIter iter;
+
+ int current_app = -1;
+
+ foreach (AppInfo app in external_apps) {
+ combo_store.append(out iter);
+
+ Icon app_icon = app.get_icon();
+ try {
+ if (app_icon is FileIcon) {
+ combo_store.set_value(iter, 0, scale_pixbuf(new Gdk.Pixbuf.from_file(
+ ((FileIcon) app_icon).get_file().get_path()), Resources.DEFAULT_ICON_SCALE,
+ Gdk.InterpType.BILINEAR, false));
+ } else if (app_icon is ThemedIcon) {
+ Gdk.Pixbuf icon_pixbuf =
+ Gtk.IconTheme.get_default().load_icon(((ThemedIcon) app_icon).get_names()[0],
+ Resources.DEFAULT_ICON_SCALE, Gtk.IconLookupFlags.FORCE_SIZE);
+
+ combo_store.set_value(iter, 0, icon_pixbuf);
+ }
+ } catch (GLib.Error error) {
+ warning("Error loading icon pixbuf: " + error.message);
+ }
+
+ combo_store.set_value(iter, 1, app.get_name());
+
+ if (app.get_commandline() == current_app_executable)
+ current_app = external_apps.index_of(app);
+ }
+
+ // TODO: allow users to choose unlisted applications like Nautilus's "Open with -> Other Application..."
+
+ combo_box.set_model(combo_store);
+
+ if (current_app != -1)
+ combo_box.set_active(current_app);
+ }
+
+ private void setup_dir_pattern(Gtk.ComboBox combo_box, Gtk.Entry entry) {
+ string? pattern = Config.Facade.get_instance().get_directory_pattern();
+ bool found = false;
+ if (null != pattern) {
+ // Locate pre-built text.
+ int i = 0;
+ foreach (PathFormat pf in path_formats) {
+ if (pf.pattern == pattern) {
+ combo_box.set_active(i);
+ found = true;
+ break;
+ }
+ i++;
+ }
+ } else {
+ // Custom path.
+ string? s = Config.Facade.get_instance().get_directory_pattern_custom();
+ if (!is_string_empty(s)) {
+ combo_box.set_active(path_formats.size - 1); // Assume "custom" is last.
+ found = true;
+ }
+ }
+
+ if (!found) {
+ combo_box.set_active(0);
+ }
+
+ on_dir_pattern_combo_changed();
+ }
+
+ public static void show_preferences() {
+ if (preferences_dialog == null)
+ preferences_dialog = new PreferencesDialog();
+
+ preferences_dialog.populate_preference_options();
+ preferences_dialog.show_all();
+ preferences_dialog.library_dir_button.set_current_folder(AppDirs.get_import_dir().get_path());
+
+ // Ticket #3001: Cause the dialog to become active if the user chooses 'Preferences'
+ // from the menus a second time.
+ preferences_dialog.present();
+ }
+
+ // For items that should only be committed when the dialog is closed, not as soon as the change
+ // is made.
+ private void commit_on_close() {
+ Config.Facade.get_instance().commit_bg_color();
+ Config.Facade.get_instance().set_auto_import_from_library(autoimport.active);
+ Config.Facade.get_instance().set_commit_metadata_to_masters(write_metadata.active);
+
+ if (lib_dir != null)
+ AppDirs.set_import_dir(lib_dir);
+
+ PathFormat pf = path_formats.get(dir_pattern_combo.get_active());
+ if (null == pf.pattern) {
+ Config.Facade.get_instance().set_directory_pattern_custom(dir_pattern_entry.text);
+ Config.Facade.get_instance().set_directory_pattern(null);
+ } else {
+ Config.Facade.get_instance().set_directory_pattern(pf.pattern);
+ }
+ }
+
+ private bool on_delete() {
+ if (!get_allow_closing())
+ return true;
+
+ commit_on_close();
+ return hide_on_delete(); //prevent widgets from getting destroyed
+ }
+
+ private void on_close() {
+ if (!get_allow_closing())
+ return;
+
+ hide();
+ commit_on_close();
+ }
+
+ private void on_value_changed() {
+ set_background_color((double)(bg_color_adjustment.get_upper() -
+ bg_color_adjustment.get_value()) / 65535.0);
+ }
+
+ private bool on_bg_color_reset(Gdk.EventButton event) {
+ if (event.button == 1 && event.type == Gdk.EventType.BUTTON_PRESS
+ && has_only_key_modifier(event.state, Gdk.ModifierType.CONTROL_MASK)) {
+ // Left Mouse Button and CTRL pressed
+ bg_color_slider.set_value(bg_color_adjustment.get_upper() -
+ (parse_color(Config.Facade.DEFAULT_BG_COLOR).red * 65536.0f));
+ on_value_changed();
+
+ return true;
+ }
+
+ return false;
+ }
+
+ private void on_dir_pattern_combo_changed() {
+ PathFormat pf = path_formats.get(dir_pattern_combo.get_active());
+ if (null == pf.pattern) {
+ // Custom format.
+ string? dir_pattern = Config.Facade.get_instance().get_directory_pattern_custom();
+ if (is_string_empty(dir_pattern))
+ dir_pattern = "";
+ dir_pattern_entry.set_text(dir_pattern);
+ dir_pattern_entry.editable = true;
+ dir_pattern_entry.sensitive = true;
+ } else {
+ dir_pattern_entry.set_text(pf.pattern);
+ dir_pattern_entry.editable = false;
+ dir_pattern_entry.sensitive = false;
+ }
+ }
+
+ private void on_dir_pattern_entry_changed() {
+ string example = example_date.format(dir_pattern_entry.text);
+ if (is_string_empty(example) && !is_string_empty(dir_pattern_entry.text)) {
+ // Invalid pattern.
+ dir_pattern_example.set_text(_("Invalid pattern"));
+ dir_pattern_entry.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, "dialog-error");
+ dir_pattern_entry.set_icon_activatable(Gtk.EntryIconPosition.SECONDARY, false);
+ set_allow_closing(false);
+ } else {
+ // Valid pattern.
+ dir_pattern_example.set_text(example);
+ dir_pattern_entry.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, null);
+ set_allow_closing(true);
+ }
+ }
+
+ private void set_allow_closing(bool allow) {
+ set_deletable(allow);
+ allow_closing = allow;
+ }
+
+ private bool get_allow_closing() {
+ return allow_closing;
+ }
+
+ private void set_background_color(double bg_color_value) {
+ Config.Facade.get_instance().set_bg_color(to_grayscale(bg_color_value));
+ }
+
+ private Gdk.RGBA to_grayscale(double color_value) {
+ Gdk.RGBA color = Gdk.RGBA();
+
+ color.red = color_value;
+ color.green = color_value;
+ color.blue = color_value;
+ color.alpha = 1.0;
+
+ return color;
+ }
+
+ private void on_photo_editor_changed() {
+ int photo_app_choice_index = (photo_editor_combo.get_active() < external_photo_apps.size) ?
+ photo_editor_combo.get_active() : external_photo_apps.size;
+
+ AppInfo app = external_photo_apps.get_at(photo_app_choice_index);
+
+ Config.Facade.get_instance().set_external_photo_app(DesktopIntegration.get_app_open_command(app));
+
+ debug("setting external photo editor to: %s", DesktopIntegration.get_app_open_command(app));
+ }
+
+ private void on_raw_editor_changed() {
+ int raw_app_choice_index = (raw_editor_combo.get_active() < external_raw_apps.size) ?
+ raw_editor_combo.get_active() : external_raw_apps.size;
+
+ AppInfo app = external_raw_apps.get_at(raw_app_choice_index);
+
+ Config.Facade.get_instance().set_external_raw_app(app.get_commandline());
+
+ debug("setting external raw editor to: %s", app.get_commandline());
+ }
+
+ private RawDeveloper raw_developer_from_combo() {
+ if (default_raw_developer_combo.get_active() == 0)
+ return RawDeveloper.CAMERA;
+ return RawDeveloper.SHOTWELL;
+ }
+
+ private void set_raw_developer_combo(RawDeveloper d) {
+ if (d == RawDeveloper.CAMERA)
+ default_raw_developer_combo.set_active(0);
+ else
+ default_raw_developer_combo.set_active(1);
+ }
+
+ private void on_default_raw_developer_changed() {
+ Config.Facade.get_instance().set_default_raw_developer(raw_developer_from_combo());
+ }
+
+ private void on_current_folder_changed() {
+ lib_dir = library_dir_button.get_filename();
+ }
+
+ public override bool map_event(Gdk.EventAny event) {
+ var result = base.map_event(event);
+ // Set the signal for the lib dir button after the dialog is displayed,
+ // because the FileChooserButton has a nasty habit of selecting a
+ // different folder when displayed if the provided path doesn't exist.
+ // See ticket #3000 for more info.
+ library_dir_button.current_folder_changed.connect(on_current_folder_changed);
+
+ return result;
+ }
+
+ private void add_to_dir_formats(string name, string? pattern) {
+ PathFormat pf = new PathFormat(name, pattern);
+ path_formats.add(pf);
+ dir_pattern_combo.append_text(name);
+ }
+
+ private void on_lowercase_toggled() {
+ Config.Facade.get_instance().set_use_lowercase_filenames(lowercase.get_active());
+ }
+}
diff --git a/src/dialogs/ProgressDialog.c b/src/dialogs/ProgressDialog.c
new file mode 100644
index 0000000..5183c12
--- /dev/null
+++ b/src/dialogs/ProgressDialog.c
@@ -0,0 +1,715 @@
+/* ProgressDialog.c generated by valac 0.36.6, the Vala compiler
+ * generated from ProgressDialog.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <gio/gio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gdk/gdk.h>
+#include <glib/gi18n-lib.h>
+#include <float.h>
+#include <math.h>
+
+
+#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;
+typedef struct _ProgressDialogPrivate ProgressDialogPrivate;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+#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 _ProgressDialog {
+ GtkWindow parent_instance;
+ ProgressDialogPrivate * priv;
+};
+
+struct _ProgressDialogClass {
+ GtkWindowClass parent_class;
+};
+
+struct _ProgressDialogPrivate {
+ GtkProgressBar* progress_bar;
+ GtkButton* cancel_button;
+ GCancellable* cancellable;
+ guint64 last_count;
+ gint update_every;
+ gint minimum_on_screen_time_msec;
+ gulong time_started;
+};
+
+
+static gpointer progress_dialog_parent_class = NULL;
+
+GType progress_dialog_get_type (void) G_GNUC_CONST;
+#define PROGRESS_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_PROGRESS_DIALOG, ProgressDialogPrivate))
+enum {
+ PROGRESS_DIALOG_DUMMY_PROPERTY
+};
+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);
+#define RESOURCES_CANCEL_LABEL _ ("_Cancel")
+static void progress_dialog_on_cancel (ProgressDialog* self);
+static void _progress_dialog_on_cancel_gtk_button_clicked (GtkButton* _sender, gpointer self);
+static gboolean progress_dialog_on_window_closed (ProgressDialog* self);
+static gboolean _progress_dialog_on_window_closed_gtk_widget_delete_event (GtkWidget* _sender, GdkEventAny* event, gpointer self);
+gulong now_ms (void);
+static void progress_dialog_real_realize (GtkWidget* base);
+void progress_dialog_update_display_every (ProgressDialog* self, gint update_every);
+void progress_dialog_set_minimum_on_screen_time_msec (ProgressDialog* self, gint minimum_on_screen_time_msec);
+void progress_dialog_set_fraction (ProgressDialog* self, gint current, gint total);
+void progress_dialog_set_percentage (ProgressDialog* self, gdouble pct);
+static void progress_dialog_maybe_show_all (ProgressDialog* self, gdouble pct);
+void progress_dialog_set_status (ProgressDialog* self, const gchar* text);
+gboolean progress_dialog_monitor (ProgressDialog* self, guint64 count, guint64 total, gboolean do_event_loop);
+void spin_event_loop (void);
+void progress_dialog_close (ProgressDialog* self);
+static void progress_dialog_finalize (GObject * obj);
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+#line 21 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ return self ? g_object_ref (self) : NULL;
+#line 92 "ProgressDialog.c"
+}
+
+
+static void _progress_dialog_on_cancel_gtk_button_clicked (GtkButton* _sender, gpointer self) {
+#line 38 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ progress_dialog_on_cancel ((ProgressDialog*) self);
+#line 99 "ProgressDialog.c"
+}
+
+
+static gboolean _progress_dialog_on_window_closed_gtk_widget_delete_event (GtkWidget* _sender, GdkEventAny* event, gpointer self) {
+ gboolean result;
+ result = progress_dialog_on_window_closed ((ProgressDialog*) self);
+#line 39 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ return result;
+#line 108 "ProgressDialog.c"
+}
+
+
+ProgressDialog* progress_dialog_construct (GType object_type, GtkWindow* owner, const gchar* text, GCancellable* cancellable) {
+ ProgressDialog * self = NULL;
+ GCancellable* _tmp0_;
+ GCancellable* _tmp1_;
+ const gchar* _tmp2_;
+ GtkWindow* _tmp3_;
+ GtkProgressBar* _tmp5_;
+ GtkProgressBar* _tmp6_;
+ GtkBox* vbox_bar = NULL;
+ GtkBox* _tmp7_;
+ GtkBox* _tmp8_;
+ GtkProgressBar* _tmp9_;
+ GCancellable* _tmp10_;
+ GtkBox* hbox = NULL;
+ GtkBox* _tmp13_;
+ GtkBox* _tmp14_;
+ GtkBox* _tmp15_;
+ GtkButton* _tmp16_;
+ GtkLabel* primary_text_label = NULL;
+ GtkLabel* _tmp19_;
+ const gchar* _tmp20_;
+ gchar* _tmp21_;
+ gchar* _tmp22_;
+ GtkBox* vbox = NULL;
+ GtkBox* _tmp23_;
+ GtkBox* _tmp24_;
+ gulong _tmp25_;
+#line 20 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_val_if_fail ((owner == NULL) || GTK_IS_WINDOW (owner), NULL);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_val_if_fail (text != NULL, NULL);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_val_if_fail ((cancellable == NULL) || G_IS_CANCELLABLE (cancellable), NULL);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self = (ProgressDialog*) g_object_new (object_type, NULL);
+#line 21 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = cancellable;
+#line 21 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp1_ = _g_object_ref0 (_tmp0_);
+#line 21 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_object_unref0 (self->priv->cancellable);
+#line 21 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->cancellable = _tmp1_;
+#line 23 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp2_ = text;
+#line 23 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_window_set_title (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), _tmp2_);
+#line 24 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_window_set_resizable (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), FALSE);
+#line 25 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp3_ = owner;
+#line 25 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp3_ != NULL) {
+#line 165 "ProgressDialog.c"
+ GtkWindow* _tmp4_;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp4_ = owner;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_window_set_transient_for (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), _tmp4_);
+#line 171 "ProgressDialog.c"
+ }
+#line 27 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_window_set_modal (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), TRUE);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_window_set_type_hint (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), GDK_WINDOW_TYPE_HINT_DIALOG);
+#line 30 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp5_ = self->priv->progress_bar;
+#line 30 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_set_size_request (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_widget_get_type (), GtkWidget), 300, -1);
+#line 31 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp6_ = self->priv->progress_bar;
+#line 31 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_progress_bar_set_show_text (_tmp6_, TRUE);
+#line 33 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp7_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+#line 33 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_object_ref_sink (_tmp7_);
+#line 33 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ vbox_bar = _tmp7_;
+#line 34 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp8_ = vbox_bar;
+#line 34 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp9_ = self->priv->progress_bar;
+#line 34 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_box_pack_start (_tmp8_, G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 36 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp10_ = cancellable;
+#line 36 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp10_ != NULL) {
+#line 201 "ProgressDialog.c"
+ GtkButton* _tmp11_;
+ GtkButton* _tmp12_;
+#line 37 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp11_ = (GtkButton*) gtk_button_new_with_mnemonic (RESOURCES_CANCEL_LABEL);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_object_ref_sink (_tmp11_);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_object_unref0 (self->priv->cancel_button);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->cancel_button = _tmp11_;
+#line 38 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp12_ = self->priv->cancel_button;
+#line 38 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_signal_connect_object (_tmp12_, "clicked", (GCallback) _progress_dialog_on_cancel_gtk_button_clicked, self, 0);
+#line 39 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), "delete-event", (GCallback) _progress_dialog_on_window_closed_gtk_widget_delete_event, self, 0);
+#line 218 "ProgressDialog.c"
+ }
+#line 42 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp13_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 8);
+#line 42 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_object_ref_sink (_tmp13_);
+#line 42 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ hbox = _tmp13_;
+#line 43 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp14_ = hbox;
+#line 43 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp15_ = vbox_bar;
+#line 43 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_box_pack_start (_tmp14_, G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 44 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp16_ = self->priv->cancel_button;
+#line 44 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp16_ != NULL) {
+#line 236 "ProgressDialog.c"
+ GtkBox* _tmp17_;
+ GtkButton* _tmp18_;
+#line 45 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp17_ = hbox;
+#line 45 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp18_ = self->priv->cancel_button;
+#line 45 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_box_pack_end (_tmp17_, G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 245 "ProgressDialog.c"
+ }
+#line 47 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp19_ = (GtkLabel*) gtk_label_new ("");
+#line 47 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_object_ref_sink (_tmp19_);
+#line 47 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ primary_text_label = _tmp19_;
+#line 48 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp20_ = text;
+#line 48 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp21_ = g_strdup_printf ("<span weight=\"bold\">%s</span>", _tmp20_);
+#line 48 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp22_ = _tmp21_;
+#line 48 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_label_set_markup (primary_text_label, _tmp22_);
+#line 48 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_free0 (_tmp22_);
+#line 49 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_label_set_xalign (primary_text_label, 0.0f);
+#line 50 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_label_set_yalign (primary_text_label, 0.5f);
+#line 52 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp23_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+#line 52 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_object_ref_sink (_tmp23_);
+#line 52 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ vbox = _tmp23_;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_box_pack_start (vbox, G_TYPE_CHECK_INSTANCE_CAST (primary_text_label, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 54 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp24_ = hbox;
+#line 54 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_box_pack_start (vbox, G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, gtk_widget_get_type (), GtkWidget), TRUE, FALSE, (guint) 0);
+#line 55 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (vbox, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_CENTER);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_set_valign (G_TYPE_CHECK_INSTANCE_CAST (vbox, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_CENTER);
+#line 57 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_set_hexpand (G_TYPE_CHECK_INSTANCE_CAST (vbox, gtk_widget_get_type (), GtkWidget), TRUE);
+#line 58 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_set_vexpand (G_TYPE_CHECK_INSTANCE_CAST (vbox, gtk_widget_get_type (), GtkWidget), TRUE);
+#line 59 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_set_margin_start (G_TYPE_CHECK_INSTANCE_CAST (vbox, gtk_widget_get_type (), GtkWidget), 12);
+#line 60 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_set_margin_end (G_TYPE_CHECK_INSTANCE_CAST (vbox, gtk_widget_get_type (), GtkWidget), 12);
+#line 61 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_set_margin_top (G_TYPE_CHECK_INSTANCE_CAST (vbox, gtk_widget_get_type (), GtkWidget), 12);
+#line 62 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_set_margin_bottom (G_TYPE_CHECK_INSTANCE_CAST (vbox, gtk_widget_get_type (), GtkWidget), 12);
+#line 64 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (vbox, gtk_widget_get_type (), GtkWidget));
+#line 66 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp25_ = now_ms ();
+#line 66 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->time_started = _tmp25_;
+#line 20 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_object_unref0 (vbox);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_object_unref0 (primary_text_label);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_object_unref0 (hbox);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_object_unref0 (vbox_bar);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ return self;
+#line 311 "ProgressDialog.c"
+}
+
+
+ProgressDialog* progress_dialog_new (GtkWindow* owner, const gchar* text, GCancellable* cancellable) {
+#line 20 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ return progress_dialog_construct (TYPE_PROGRESS_DIALOG, owner, text, cancellable);
+#line 318 "ProgressDialog.c"
+}
+
+
+static void progress_dialog_real_realize (GtkWidget* base) {
+ ProgressDialog * self;
+ GCancellable* _tmp0_;
+#line 69 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_PROGRESS_DIALOG, ProgressDialog);
+#line 70 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ GTK_WIDGET_CLASS (progress_dialog_parent_class)->realize (G_TYPE_CHECK_INSTANCE_CAST (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), gtk_widget_get_type (), GtkWidget));
+#line 73 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = self->priv->cancellable;
+#line 73 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp0_ == NULL) {
+#line 333 "ProgressDialog.c"
+ GdkWindow* _tmp1_;
+#line 74 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp1_ = gtk_widget_get_window (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 74 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gdk_window_set_functions (_tmp1_, GDK_FUNC_MOVE);
+#line 339 "ProgressDialog.c"
+ }
+}
+
+
+void progress_dialog_update_display_every (ProgressDialog* self, gint update_every) {
+ gint _tmp0_;
+ gint _tmp1_;
+#line 77 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_if_fail (IS_PROGRESS_DIALOG (self));
+#line 78 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = update_every;
+#line 78 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _vala_assert (_tmp0_ >= 1, "update_every >= 1");
+#line 80 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp1_ = update_every;
+#line 80 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->update_every = _tmp1_;
+#line 357 "ProgressDialog.c"
+}
+
+
+void progress_dialog_set_minimum_on_screen_time_msec (ProgressDialog* self, gint minimum_on_screen_time_msec) {
+ gint _tmp0_;
+#line 83 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_if_fail (IS_PROGRESS_DIALOG (self));
+#line 84 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = minimum_on_screen_time_msec;
+#line 84 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->minimum_on_screen_time_msec = _tmp0_;
+#line 369 "ProgressDialog.c"
+}
+
+
+void progress_dialog_set_fraction (ProgressDialog* self, gint current, gint total) {
+ gint _tmp0_;
+ gint _tmp1_;
+#line 87 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_if_fail (IS_PROGRESS_DIALOG (self));
+#line 88 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = current;
+#line 88 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp1_ = total;
+#line 88 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ progress_dialog_set_percentage (self, ((gdouble) _tmp0_) / ((gdouble) _tmp1_));
+#line 384 "ProgressDialog.c"
+}
+
+
+void progress_dialog_set_percentage (ProgressDialog* self, gdouble pct) {
+ gdouble _tmp0_;
+ gdouble _tmp1_;
+ gdouble _tmp2_;
+ GtkProgressBar* _tmp3_;
+ gdouble _tmp4_;
+ GtkProgressBar* _tmp5_;
+ gdouble _tmp6_;
+ gchar* _tmp7_;
+ gchar* _tmp8_;
+#line 91 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_if_fail (IS_PROGRESS_DIALOG (self));
+#line 92 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = pct;
+#line 92 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp1_ = CLAMP (_tmp0_, 0.0, 1.0);
+#line 92 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ pct = _tmp1_;
+#line 94 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp2_ = pct;
+#line 94 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ progress_dialog_maybe_show_all (self, _tmp2_);
+#line 96 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp3_ = self->priv->progress_bar;
+#line 96 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp4_ = pct;
+#line 96 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_progress_bar_set_fraction (_tmp3_, _tmp4_);
+#line 97 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp5_ = self->priv->progress_bar;
+#line 97 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp6_ = pct;
+#line 97 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp7_ = g_strdup_printf (_ ("%d%%"), (gint) (_tmp6_ * 100.0));
+#line 97 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp8_ = _tmp7_;
+#line 97 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_progress_bar_set_text (_tmp5_, _tmp8_);
+#line 97 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_free0 (_tmp8_);
+#line 428 "ProgressDialog.c"
+}
+
+
+void progress_dialog_set_status (ProgressDialog* self, const gchar* text) {
+ GtkProgressBar* _tmp0_;
+ const gchar* _tmp1_;
+#line 105 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_if_fail (IS_PROGRESS_DIALOG (self));
+#line 105 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_if_fail (text != NULL);
+#line 106 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = self->priv->progress_bar;
+#line 106 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp1_ = text;
+#line 106 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_progress_bar_set_text (_tmp0_, _tmp1_);
+#line 112 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 447 "ProgressDialog.c"
+}
+
+
+gboolean progress_dialog_monitor (ProgressDialog* self, guint64 count, guint64 total, gboolean do_event_loop) {
+ gboolean result = FALSE;
+ gboolean _tmp0_ = FALSE;
+ guint64 _tmp1_;
+ gboolean _tmp8_ = FALSE;
+ GCancellable* _tmp9_;
+ gboolean keep_going = FALSE;
+ gboolean _tmp12_;
+#line 116 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_val_if_fail (IS_PROGRESS_DIALOG (self), FALSE);
+#line 117 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp1_ = self->priv->last_count;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp1_ == G_MAXUINT64) {
+#line 117 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = TRUE;
+#line 467 "ProgressDialog.c"
+ } else {
+ guint64 _tmp2_;
+ guint64 _tmp3_;
+ gint _tmp4_;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp2_ = count;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp3_ = self->priv->last_count;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp4_ = self->priv->update_every;
+#line 117 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = (_tmp2_ - _tmp3_) >= ((guint64) _tmp4_);
+#line 480 "ProgressDialog.c"
+ }
+#line 117 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp0_) {
+#line 484 "ProgressDialog.c"
+ guint64 _tmp5_;
+ guint64 _tmp6_;
+ guint64 _tmp7_;
+#line 118 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp5_ = count;
+#line 118 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp6_ = total;
+#line 118 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ progress_dialog_set_percentage (self, ((gdouble) _tmp5_) / ((gdouble) _tmp6_));
+#line 119 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp7_ = count;
+#line 119 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->last_count = _tmp7_;
+#line 498 "ProgressDialog.c"
+ }
+#line 122 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp9_ = self->priv->cancellable;
+#line 122 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp9_ != NULL) {
+#line 504 "ProgressDialog.c"
+ GCancellable* _tmp10_;
+ gboolean _tmp11_;
+#line 122 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp10_ = self->priv->cancellable;
+#line 122 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp11_ = g_cancellable_is_cancelled (_tmp10_);
+#line 122 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp8_ = !_tmp11_;
+#line 513 "ProgressDialog.c"
+ } else {
+#line 122 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp8_ = TRUE;
+#line 517 "ProgressDialog.c"
+ }
+#line 122 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ keep_going = _tmp8_;
+#line 130 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp12_ = do_event_loop;
+#line 130 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp12_) {
+#line 131 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ spin_event_loop ();
+#line 527 "ProgressDialog.c"
+ }
+#line 133 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ result = keep_going;
+#line 133 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ return result;
+#line 533 "ProgressDialog.c"
+}
+
+
+void progress_dialog_close (ProgressDialog* self) {
+#line 136 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_if_fail (IS_PROGRESS_DIALOG (self));
+#line 141 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_hide (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 142 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_destroy (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 544 "ProgressDialog.c"
+}
+
+
+static gboolean progress_dialog_on_window_closed (ProgressDialog* self) {
+ gboolean result = FALSE;
+#line 145 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_val_if_fail (IS_PROGRESS_DIALOG (self), FALSE);
+#line 146 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ progress_dialog_on_cancel (self);
+#line 147 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ result = FALSE;
+#line 147 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ return result;
+#line 558 "ProgressDialog.c"
+}
+
+
+static void progress_dialog_on_cancel (ProgressDialog* self) {
+ GCancellable* _tmp0_;
+ GtkButton* _tmp2_;
+#line 151 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_if_fail (IS_PROGRESS_DIALOG (self));
+#line 152 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = self->priv->cancellable;
+#line 152 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp0_ != NULL) {
+#line 571 "ProgressDialog.c"
+ GCancellable* _tmp1_;
+#line 153 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp1_ = self->priv->cancellable;
+#line 153 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_cancellable_cancel (_tmp1_);
+#line 577 "ProgressDialog.c"
+ }
+#line 155 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp2_ = self->priv->cancel_button;
+#line 155 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_set_sensitive (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 583 "ProgressDialog.c"
+}
+
+
+static void progress_dialog_maybe_show_all (ProgressDialog* self, gdouble pct) {
+ gboolean _tmp0_ = FALSE;
+ gboolean _tmp1_;
+ gboolean _tmp2_;
+#line 158 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_return_if_fail (IS_PROGRESS_DIALOG (self));
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp1_ = gtk_widget_get_visible (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp2_ = _tmp1_;
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (!_tmp2_) {
+#line 599 "ProgressDialog.c"
+ gulong _tmp3_;
+ gulong _tmp4_;
+ gint _tmp5_;
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp3_ = now_ms ();
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp4_ = self->priv->time_started;
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp5_ = self->priv->minimum_on_screen_time_msec;
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = (_tmp3_ - _tmp4_) > ((gulong) _tmp5_);
+#line 611 "ProgressDialog.c"
+ } else {
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = FALSE;
+#line 615 "ProgressDialog.c"
+ }
+#line 161 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp0_) {
+#line 619 "ProgressDialog.c"
+ gdouble pps = 0.0;
+ gdouble _tmp6_;
+ gint _tmp7_;
+ gdouble ttc = 0.0;
+ gdouble _tmp8_;
+ gdouble _tmp9_;
+ gint _tmp10_;
+#line 163 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp6_ = pct;
+#line 163 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp7_ = self->priv->minimum_on_screen_time_msec;
+#line 163 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ pps = (_tmp6_ * 100.0) / _tmp7_;
+#line 165 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp8_ = pps;
+#line 165 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ ttc = 100.0 / _tmp8_;
+#line 168 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp9_ = ttc;
+#line 168 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp10_ = self->priv->minimum_on_screen_time_msec;
+#line 168 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ if (_tmp9_ > ((gdouble) _tmp10_)) {
+#line 173 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 174 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ spin_event_loop ();
+#line 647 "ProgressDialog.c"
+ }
+ }
+}
+
+
+static void progress_dialog_class_init (ProgressDialogClass * klass) {
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ progress_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_type_class_add_private (klass, sizeof (ProgressDialogPrivate));
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ ((GtkWidgetClass *) klass)->realize = (void (*) (GtkWidget *)) progress_dialog_real_realize;
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ G_OBJECT_CLASS (klass)->finalize = progress_dialog_finalize;
+#line 662 "ProgressDialog.c"
+}
+
+
+static void progress_dialog_instance_init (ProgressDialog * self) {
+ GtkProgressBar* _tmp0_;
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv = PROGRESS_DIALOG_GET_PRIVATE (self);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _tmp0_ = (GtkProgressBar*) gtk_progress_bar_new ();
+#line 9 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ g_object_ref_sink (_tmp0_);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->progress_bar = _tmp0_;
+#line 10 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->cancel_button = NULL;
+#line 12 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->last_count = G_MAXUINT64;
+#line 13 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->update_every = 1;
+#line 14 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self->priv->minimum_on_screen_time_msec = 500;
+#line 684 "ProgressDialog.c"
+}
+
+
+static void progress_dialog_finalize (GObject * obj) {
+ ProgressDialog * self;
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PROGRESS_DIALOG, ProgressDialog);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_object_unref0 (self->priv->progress_bar);
+#line 10 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_object_unref0 (self->priv->cancel_button);
+#line 11 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ _g_object_unref0 (self->priv->cancellable);
+#line 8 "/home/jens/Source/shotwell/src/dialogs/ProgressDialog.vala"
+ G_OBJECT_CLASS (progress_dialog_parent_class)->finalize (obj);
+#line 700 "ProgressDialog.c"
+}
+
+
+GType progress_dialog_get_type (void) {
+ static volatile gsize progress_dialog_type_id__volatile = 0;
+ if (g_once_init_enter (&progress_dialog_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (ProgressDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) progress_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ProgressDialog), 0, (GInstanceInitFunc) progress_dialog_instance_init, NULL };
+ GType progress_dialog_type_id;
+ progress_dialog_type_id = g_type_register_static (gtk_window_get_type (), "ProgressDialog", &g_define_type_info, 0);
+ g_once_init_leave (&progress_dialog_type_id__volatile, progress_dialog_type_id);
+ }
+ return progress_dialog_type_id__volatile;
+}
+
+
+
diff --git a/src/dialogs/ProgressDialog.vala b/src/dialogs/ProgressDialog.vala
new file mode 100644
index 0000000..9368764
--- /dev/null
+++ b/src/dialogs/ProgressDialog.vala
@@ -0,0 +1,178 @@
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+public class ProgressDialog : Gtk.Window {
+ private Gtk.ProgressBar progress_bar = new Gtk.ProgressBar();
+ private Gtk.Button cancel_button = null;
+ private Cancellable cancellable;
+ private uint64 last_count = uint64.MAX;
+ private int update_every = 1;
+ private int minimum_on_screen_time_msec = 500;
+ private ulong time_started;
+#if UNITY_SUPPORT
+ UnityProgressBar uniprobar = UnityProgressBar.get_instance();
+#endif
+
+ public ProgressDialog(Gtk.Window? owner, string text, Cancellable? cancellable = null) {
+ this.cancellable = cancellable;
+
+ set_title(text);
+ set_resizable(false);
+ if (owner != null)
+ set_transient_for(owner);
+ set_modal(true);
+ set_type_hint(Gdk.WindowTypeHint.DIALOG);
+
+ progress_bar.set_size_request(300, -1);
+ progress_bar.set_show_text(true);
+
+ Gtk.Box vbox_bar = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
+ vbox_bar.pack_start(progress_bar, true, false, 0);
+
+ if (cancellable != null) {
+ cancel_button = new Gtk.Button.with_mnemonic(Resources.CANCEL_LABEL);
+ cancel_button.clicked.connect(on_cancel);
+ delete_event.connect(on_window_closed);
+ }
+
+ Gtk.Box hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8);
+ hbox.pack_start(vbox_bar, true, false, 0);
+ if (cancel_button != null)
+ hbox.pack_end(cancel_button, false, false, 0);
+
+ Gtk.Label primary_text_label = new Gtk.Label("");
+ primary_text_label.set_markup("<span weight=\"bold\">%s</span>".printf(text));
+ primary_text_label.xalign = 0.0f;
+ primary_text_label.yalign = 0.5f;
+
+ Gtk.Box vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 12);
+ vbox.pack_start(primary_text_label, false, false, 0);
+ vbox.pack_start(hbox, true, false, 0);
+ vbox.halign = Gtk.Align.CENTER;
+ vbox.valign = Gtk.Align.CENTER;
+ vbox.hexpand = true;
+ vbox.vexpand = true;
+ vbox.margin_start = 12;
+ vbox.margin_end = 12;
+ vbox.margin_top = 12;
+ vbox.margin_bottom = 12;
+
+ add(vbox);
+
+ time_started = now_ms();
+ }
+
+ public override void realize() {
+ base.realize();
+
+ // if unable to cancel the progress bar, remove the close button
+ if (cancellable == null)
+ get_window().set_functions(Gdk.WMFunction.MOVE);
+ }
+
+ public void update_display_every(int update_every) {
+ assert(update_every >= 1);
+
+ this.update_every = update_every;
+ }
+
+ public void set_minimum_on_screen_time_msec(int minimum_on_screen_time_msec) {
+ this.minimum_on_screen_time_msec = minimum_on_screen_time_msec;
+ }
+
+ public void set_fraction(int current, int total) {
+ set_percentage((double) current / (double) total);
+ }
+
+ public void set_percentage(double pct) {
+ pct = pct.clamp(0.0, 1.0);
+
+ maybe_show_all(pct);
+
+ progress_bar.set_fraction(pct);
+ progress_bar.set_text(_("%d%%").printf((int) (pct * 100.0)));
+
+#if UNITY_SUPPORT
+ //UnityProgressBar: set progress
+ uniprobar.set_progress(pct);
+#endif
+ }
+
+ public void set_status(string text) {
+ progress_bar.set_text(text);
+
+#if UNITY_SUPPORT
+ //UnityProgressBar: try to draw progress bar
+ uniprobar.set_visible(true);
+#endif
+ show_all();
+ }
+
+ // This can be used as a ProgressMonitor delegate.
+ public bool monitor(uint64 count, uint64 total, bool do_event_loop = true) {
+ if ((last_count == uint64.MAX) || (count - last_count) >= update_every) {
+ set_percentage((double) count / (double) total);
+ last_count = count;
+ }
+
+ bool keep_going = (cancellable != null) ? !cancellable.is_cancelled() : true;
+
+ // TODO: get rid of this. non-trivial, as some progress-monitor operations are blocking
+ // and need to allow the event loop to spin
+ //
+ // Important: Since it's possible the progress dialog might be destroyed inside this call,
+ // avoid referring to "this" afterwards at all costs (in case all refs have been dropped)
+
+ if (do_event_loop)
+ spin_event_loop();
+
+ return keep_going;
+ }
+
+ public new void close() {
+#if UNITY_SUPPORT
+ //UnityProgressBar: reset
+ uniprobar.reset();
+#endif
+ hide();
+ destroy();
+ }
+
+ private bool on_window_closed() {
+ on_cancel();
+ return false; // return false so that the system handler will remove the window from
+ // the screen
+ }
+
+ private void on_cancel() {
+ if (cancellable != null)
+ cancellable.cancel();
+
+ cancel_button.sensitive = false;
+ }
+
+ private void maybe_show_all(double pct) {
+ // Appear only after a while because some jobs may take only a
+ // fraction of second to complete so there's no point in showing progress.
+ if (!this.visible && now_ms() - time_started > minimum_on_screen_time_msec) {
+ // calculate percents completed in one ms
+ double pps = pct * 100.0 / minimum_on_screen_time_msec;
+ // calculate [very rough] estimate of time to complete in ms
+ double ttc = 100.0 / pps;
+ // If there is still more work to do for at least MINIMUM_ON_SCREEN_TIME_MSEC,
+ // finally display the dialog.
+ if (ttc > minimum_on_screen_time_msec) {
+#if UNITY_SUPPORT
+ //UnityProgressBar: try to draw progress bar
+ uniprobar.set_visible(true);
+#endif
+ show_all();
+ spin_event_loop();
+ }
+ }
+ }
+}
diff --git a/src/dialogs/SetBackground.c b/src/dialogs/SetBackground.c
new file mode 100644
index 0000000..3f4d45f
--- /dev/null
+++ b/src/dialogs/SetBackground.c
@@ -0,0 +1,274 @@
+/* SetBackground.c generated by valac 0.36.6, the Vala compiler
+ * generated from SetBackground.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+
+#define TYPE_SET_BACKGROUND_PHOTO_DIALOG (set_background_photo_dialog_get_type ())
+#define SET_BACKGROUND_PHOTO_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SET_BACKGROUND_PHOTO_DIALOG, SetBackgroundPhotoDialog))
+#define SET_BACKGROUND_PHOTO_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SET_BACKGROUND_PHOTO_DIALOG, SetBackgroundPhotoDialogClass))
+#define IS_SET_BACKGROUND_PHOTO_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SET_BACKGROUND_PHOTO_DIALOG))
+#define IS_SET_BACKGROUND_PHOTO_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SET_BACKGROUND_PHOTO_DIALOG))
+#define SET_BACKGROUND_PHOTO_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SET_BACKGROUND_PHOTO_DIALOG, SetBackgroundPhotoDialogClass))
+
+typedef struct _SetBackgroundPhotoDialog SetBackgroundPhotoDialog;
+typedef struct _SetBackgroundPhotoDialogClass SetBackgroundPhotoDialogClass;
+typedef struct _SetBackgroundPhotoDialogPrivate SetBackgroundPhotoDialogPrivate;
+#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;
+
+struct _SetBackgroundPhotoDialog {
+ GtkDialog parent_instance;
+ SetBackgroundPhotoDialogPrivate * priv;
+};
+
+struct _SetBackgroundPhotoDialogClass {
+ GtkDialogClass parent_class;
+};
+
+struct _SetBackgroundPhotoDialogPrivate {
+ GtkCheckButton* desktop_background_checkbox;
+ GtkCheckButton* screensaver_checkbox;
+};
+
+
+static gpointer set_background_photo_dialog_parent_class = NULL;
+
+GType set_background_photo_dialog_get_type (void) G_GNUC_CONST;
+#define SET_BACKGROUND_PHOTO_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SET_BACKGROUND_PHOTO_DIALOG, SetBackgroundPhotoDialogPrivate))
+enum {
+ SET_BACKGROUND_PHOTO_DIALOG_DUMMY_PROPERTY
+};
+SetBackgroundPhotoDialog* set_background_photo_dialog_new (void);
+SetBackgroundPhotoDialog* set_background_photo_dialog_construct (GType object_type);
+gint resources_use_header_bar (void);
+GType page_window_get_type (void) G_GNUC_CONST;
+GType app_window_get_type (void) G_GNUC_CONST;
+AppWindow* app_window_get_instance (void);
+static void set_background_photo_dialog_on_checkbox_clicked (SetBackgroundPhotoDialog* self);
+static void _set_background_photo_dialog_on_checkbox_clicked_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self);
+gboolean set_background_photo_dialog_execute (SetBackgroundPhotoDialog* self, gboolean* desktop_background, gboolean* screensaver);
+static void set_background_photo_dialog_finalize (GObject * obj);
+
+
+SetBackgroundPhotoDialog* set_background_photo_dialog_construct (GType object_type) {
+ SetBackgroundPhotoDialog * self = NULL;
+ gint _tmp0_;
+ AppWindow* _tmp1_;
+ AppWindow* _tmp2_;
+#line 16 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp0_ = resources_use_header_bar ();
+#line 16 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ self = (SetBackgroundPhotoDialog*) g_object_new (object_type, "use-header-bar", _tmp0_, NULL);
+#line 17 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp1_ = app_window_get_instance ();
+#line 17 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp2_ = _tmp1_;
+#line 17 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ gtk_window_set_transient_for (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_window_get_type (), GtkWindow));
+#line 17 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _g_object_unref0 (_tmp2_);
+#line 15 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ return self;
+#line 102 "SetBackground.c"
+}
+
+
+SetBackgroundPhotoDialog* set_background_photo_dialog_new (void) {
+#line 15 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ return set_background_photo_dialog_construct (TYPE_SET_BACKGROUND_PHOTO_DIALOG);
+#line 109 "SetBackground.c"
+}
+
+
+static void set_background_photo_dialog_on_checkbox_clicked (SetBackgroundPhotoDialog* self) {
+ gboolean _tmp0_ = FALSE;
+ GtkCheckButton* _tmp1_;
+ gboolean _tmp2_;
+ gboolean _tmp3_;
+#line 21 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ g_return_if_fail (IS_SET_BACKGROUND_PHOTO_DIALOG (self));
+#line 23 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp1_ = self->priv->desktop_background_checkbox;
+#line 23 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp2_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 23 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp3_ = _tmp2_;
+#line 23 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ if (_tmp3_) {
+#line 23 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp0_ = TRUE;
+#line 130 "SetBackground.c"
+ } else {
+ GtkCheckButton* _tmp4_;
+ gboolean _tmp5_;
+ gboolean _tmp6_;
+#line 24 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp4_ = self->priv->screensaver_checkbox;
+#line 24 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp5_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 24 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp6_ = _tmp5_;
+#line 24 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp0_ = _tmp6_;
+#line 143 "SetBackground.c"
+ }
+#line 22 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ gtk_dialog_set_response_sensitive (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), (gint) GTK_RESPONSE_OK, _tmp0_);
+#line 147 "SetBackground.c"
+}
+
+
+static void _set_background_photo_dialog_on_checkbox_clicked_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) {
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ set_background_photo_dialog_on_checkbox_clicked ((SetBackgroundPhotoDialog*) self);
+#line 154 "SetBackground.c"
+}
+
+
+gboolean set_background_photo_dialog_execute (SetBackgroundPhotoDialog* self, gboolean* desktop_background, gboolean* screensaver) {
+ gboolean _vala_desktop_background = FALSE;
+ gboolean _vala_screensaver = FALSE;
+ gboolean result = FALSE;
+ gboolean _result_ = FALSE;
+ gint _tmp0_;
+ GtkCheckButton* _tmp1_;
+ gboolean _tmp2_;
+ gboolean _tmp3_;
+ GtkCheckButton* _tmp4_;
+ gboolean _tmp5_;
+ gboolean _tmp6_;
+#line 27 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ g_return_val_if_fail (IS_SET_BACKGROUND_PHOTO_DIALOG (self), FALSE);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 29 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp0_ = gtk_dialog_run (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog));
+#line 29 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _result_ = _tmp0_ == ((gint) GTK_RESPONSE_OK);
+#line 30 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ gtk_widget_hide (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 32 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp1_ = self->priv->desktop_background_checkbox;
+#line 32 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp2_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 32 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp3_ = _tmp2_;
+#line 32 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _vala_desktop_background = _tmp3_;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp4_ = self->priv->screensaver_checkbox;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp5_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 33 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _tmp6_ = _tmp5_;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _vala_screensaver = _tmp6_;
+#line 35 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ gtk_widget_destroy (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 36 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ result = _result_;
+#line 36 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ if (desktop_background) {
+#line 36 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ *desktop_background = _vala_desktop_background;
+#line 204 "SetBackground.c"
+ }
+#line 36 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ if (screensaver) {
+#line 36 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ *screensaver = _vala_screensaver;
+#line 210 "SetBackground.c"
+ }
+#line 36 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ return result;
+#line 214 "SetBackground.c"
+}
+
+
+static void set_background_photo_dialog_class_init (SetBackgroundPhotoDialogClass * klass) {
+ gint SetBackgroundPhotoDialog_private_offset;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ set_background_photo_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ g_type_class_add_private (klass, sizeof (SetBackgroundPhotoDialogPrivate));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ G_OBJECT_CLASS (klass)->finalize = set_background_photo_dialog_finalize;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ SetBackgroundPhotoDialog_private_offset = g_type_class_get_instance_private_offset (klass);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/Shotwell/ui/set_background_dialog.ui");
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "desktop_background_checkbox", FALSE, SetBackgroundPhotoDialog_private_offset + G_STRUCT_OFFSET (SetBackgroundPhotoDialogPrivate, desktop_background_checkbox));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "screensaver_checkbox", FALSE, SetBackgroundPhotoDialog_private_offset + G_STRUCT_OFFSET (SetBackgroundPhotoDialogPrivate, screensaver_checkbox));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_checkbox_clicked", G_CALLBACK(_set_background_photo_dialog_on_checkbox_clicked_gtk_toggle_button_toggled));
+#line 236 "SetBackground.c"
+}
+
+
+static void set_background_photo_dialog_instance_init (SetBackgroundPhotoDialog * self) {
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ self->priv = SET_BACKGROUND_PHOTO_DIALOG_GET_PRIVATE (self);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ gtk_widget_init_template (GTK_WIDGET (self));
+#line 245 "SetBackground.c"
+}
+
+
+static void set_background_photo_dialog_finalize (GObject * obj) {
+ SetBackgroundPhotoDialog * self;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SET_BACKGROUND_PHOTO_DIALOG, SetBackgroundPhotoDialog);
+#line 11 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _g_object_unref0 (self->priv->desktop_background_checkbox);
+#line 13 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ _g_object_unref0 (self->priv->screensaver_checkbox);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackground.vala"
+ G_OBJECT_CLASS (set_background_photo_dialog_parent_class)->finalize (obj);
+#line 259 "SetBackground.c"
+}
+
+
+GType set_background_photo_dialog_get_type (void) {
+ static volatile gsize set_background_photo_dialog_type_id__volatile = 0;
+ if (g_once_init_enter (&set_background_photo_dialog_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SetBackgroundPhotoDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) set_background_photo_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SetBackgroundPhotoDialog), 0, (GInstanceInitFunc) set_background_photo_dialog_instance_init, NULL };
+ GType set_background_photo_dialog_type_id;
+ set_background_photo_dialog_type_id = g_type_register_static (gtk_dialog_get_type (), "SetBackgroundPhotoDialog", &g_define_type_info, 0);
+ g_once_init_leave (&set_background_photo_dialog_type_id__volatile, set_background_photo_dialog_type_id);
+ }
+ return set_background_photo_dialog_type_id__volatile;
+}
+
+
+
diff --git a/src/dialogs/SetBackground.vala b/src/dialogs/SetBackground.vala
new file mode 100644
index 0000000..d9a77c4
--- /dev/null
+++ b/src/dialogs/SetBackground.vala
@@ -0,0 +1,38 @@
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+[GtkTemplate (ui = "/org/gnome/Shotwell/ui/set_background_dialog.ui")]
+public class SetBackgroundPhotoDialog : Gtk.Dialog {
+ [GtkChild]
+ private Gtk.CheckButton desktop_background_checkbox;
+ [GtkChild]
+ private Gtk.CheckButton screensaver_checkbox;
+
+ public SetBackgroundPhotoDialog() {
+ Object(use_header_bar: Resources.use_header_bar());
+ this.set_transient_for (AppWindow.get_instance());
+ }
+
+ [GtkCallback]
+ private void on_checkbox_clicked() {
+ set_response_sensitive (Gtk.ResponseType.OK,
+ desktop_background_checkbox.active ||
+ screensaver_checkbox.active);
+ }
+
+ public bool execute(out bool desktop_background, out bool screensaver) {
+ this.show_all();
+ var result = this.run() == Gtk.ResponseType.OK;
+ this.hide ();
+
+ desktop_background = desktop_background_checkbox.active;
+ screensaver = screensaver_checkbox.active;
+
+ this.destroy();
+ return result;
+ }
+}
diff --git a/src/dialogs/SetBackgroundSlideshow.c b/src/dialogs/SetBackgroundSlideshow.c
new file mode 100644
index 0000000..6e13d67
--- /dev/null
+++ b/src/dialogs/SetBackgroundSlideshow.c
@@ -0,0 +1,474 @@
+/* SetBackgroundSlideshow.c generated by valac 0.36.6, the Vala compiler
+ * generated from SetBackgroundSlideshow.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <float.h>
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib/gi18n-lib.h>
+
+
+#define TYPE_SET_BACKGROUND_SLIDESHOW_DIALOG (set_background_slideshow_dialog_get_type ())
+#define SET_BACKGROUND_SLIDESHOW_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SET_BACKGROUND_SLIDESHOW_DIALOG, SetBackgroundSlideshowDialog))
+#define SET_BACKGROUND_SLIDESHOW_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SET_BACKGROUND_SLIDESHOW_DIALOG, SetBackgroundSlideshowDialogClass))
+#define IS_SET_BACKGROUND_SLIDESHOW_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SET_BACKGROUND_SLIDESHOW_DIALOG))
+#define IS_SET_BACKGROUND_SLIDESHOW_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SET_BACKGROUND_SLIDESHOW_DIALOG))
+#define SET_BACKGROUND_SLIDESHOW_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SET_BACKGROUND_SLIDESHOW_DIALOG, SetBackgroundSlideshowDialogClass))
+
+typedef struct _SetBackgroundSlideshowDialog SetBackgroundSlideshowDialog;
+typedef struct _SetBackgroundSlideshowDialogClass SetBackgroundSlideshowDialogClass;
+typedef struct _SetBackgroundSlideshowDialogPrivate SetBackgroundSlideshowDialogPrivate;
+#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 _g_free0(var) (var = (g_free (var), NULL))
+
+struct _SetBackgroundSlideshowDialog {
+ GtkDialog parent_instance;
+ SetBackgroundSlideshowDialogPrivate * priv;
+};
+
+struct _SetBackgroundSlideshowDialogClass {
+ GtkDialogClass parent_class;
+};
+
+struct _SetBackgroundSlideshowDialogPrivate {
+ GtkCheckButton* desktop_background_checkbox;
+ GtkCheckButton* screensaver_checkbox;
+ GtkScale* delay_scale;
+ GtkLabel* delay_value_label;
+ gint delay_value;
+};
+
+
+static gpointer set_background_slideshow_dialog_parent_class = NULL;
+
+GType set_background_slideshow_dialog_get_type (void) G_GNUC_CONST;
+#define SET_BACKGROUND_SLIDESHOW_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_SET_BACKGROUND_SLIDESHOW_DIALOG, SetBackgroundSlideshowDialogPrivate))
+enum {
+ SET_BACKGROUND_SLIDESHOW_DIALOG_DUMMY_PROPERTY
+};
+SetBackgroundSlideshowDialog* set_background_slideshow_dialog_new (void);
+SetBackgroundSlideshowDialog* set_background_slideshow_dialog_construct (GType object_type);
+gint resources_use_header_bar (void);
+GType page_window_get_type (void) G_GNUC_CONST;
+GType app_window_get_type (void) G_GNUC_CONST;
+AppWindow* app_window_get_instance (void);
+static void set_background_slideshow_dialog_real_constructed (GObject* base);
+static void set_background_slideshow_dialog_on_delay_scale_value_changed (SetBackgroundSlideshowDialog* self);
+static void set_background_slideshow_dialog_on_checkbox_clicked (SetBackgroundSlideshowDialog* self);
+static void _set_background_slideshow_dialog_on_checkbox_clicked_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self);
+static void _set_background_slideshow_dialog_on_delay_scale_value_changed_gtk_range_value_changed (GtkRange* _sender, gpointer self);
+gboolean set_background_slideshow_dialog_execute (SetBackgroundSlideshowDialog* self, gint* delay_value, gboolean* desktop_background, gboolean* screensaver);
+static void set_background_slideshow_dialog_finalize (GObject * obj);
+
+
+SetBackgroundSlideshowDialog* set_background_slideshow_dialog_construct (GType object_type) {
+ SetBackgroundSlideshowDialog * self = NULL;
+ gint _tmp0_;
+ AppWindow* _tmp1_;
+ AppWindow* _tmp2_;
+#line 22 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp0_ = resources_use_header_bar ();
+#line 22 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ self = (SetBackgroundSlideshowDialog*) g_object_new (object_type, "use-header-bar", _tmp0_, NULL);
+#line 23 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp1_ = app_window_get_instance ();
+#line 23 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp2_ = _tmp1_;
+#line 23 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_window_set_transient_for (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_window_get_type (), GtkWindow));
+#line 23 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _g_object_unref0 (_tmp2_);
+#line 21 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ return self;
+#line 114 "SetBackgroundSlideshow.c"
+}
+
+
+SetBackgroundSlideshowDialog* set_background_slideshow_dialog_new (void) {
+#line 21 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ return set_background_slideshow_dialog_construct (TYPE_SET_BACKGROUND_SLIDESHOW_DIALOG);
+#line 121 "SetBackgroundSlideshow.c"
+}
+
+
+static void set_background_slideshow_dialog_real_constructed (GObject* base) {
+ SetBackgroundSlideshowDialog * self;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_SET_BACKGROUND_SLIDESHOW_DIALOG, SetBackgroundSlideshowDialog);
+#line 27 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ set_background_slideshow_dialog_on_delay_scale_value_changed (self);
+#line 131 "SetBackgroundSlideshow.c"
+}
+
+
+static void set_background_slideshow_dialog_on_checkbox_clicked (SetBackgroundSlideshowDialog* self) {
+ gboolean _tmp0_ = FALSE;
+ GtkCheckButton* _tmp1_;
+ gboolean _tmp2_;
+ gboolean _tmp3_;
+#line 31 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ g_return_if_fail (IS_SET_BACKGROUND_SLIDESHOW_DIALOG (self));
+#line 33 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp1_ = self->priv->desktop_background_checkbox;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp2_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 33 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp3_ = _tmp2_;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ if (_tmp3_) {
+#line 33 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp0_ = TRUE;
+#line 152 "SetBackgroundSlideshow.c"
+ } else {
+ GtkCheckButton* _tmp4_;
+ gboolean _tmp5_;
+ gboolean _tmp6_;
+#line 34 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp4_ = self->priv->screensaver_checkbox;
+#line 34 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp5_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 34 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp6_ = _tmp5_;
+#line 34 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp0_ = _tmp6_;
+#line 165 "SetBackgroundSlideshow.c"
+ }
+#line 32 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_dialog_set_response_sensitive (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), (gint) GTK_RESPONSE_OK, _tmp0_);
+#line 169 "SetBackgroundSlideshow.c"
+}
+
+
+static void _set_background_slideshow_dialog_on_checkbox_clicked_gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) {
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ set_background_slideshow_dialog_on_checkbox_clicked ((SetBackgroundSlideshowDialog*) self);
+#line 176 "SetBackgroundSlideshow.c"
+}
+
+
+static void set_background_slideshow_dialog_on_delay_scale_value_changed (SetBackgroundSlideshowDialog* self) {
+ gdouble value = 0.0;
+ GtkScale* _tmp0_;
+ GtkAdjustment* _tmp1_;
+ GtkAdjustment* _tmp2_;
+ gdouble _tmp3_;
+ gdouble _tmp4_;
+ gdouble _tmp5_;
+ gdouble _tmp6_;
+ gdouble _tmp7_;
+ gchar* text = NULL;
+ gint _tmp8_;
+ GtkLabel* _tmp25_;
+ const gchar* _tmp26_;
+#line 38 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ g_return_if_fail (IS_SET_BACKGROUND_SLIDESHOW_DIALOG (self));
+#line 39 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp0_ = self->priv->delay_scale;
+#line 39 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp1_ = gtk_range_get_adjustment (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, gtk_range_get_type (), GtkRange));
+#line 39 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp2_ = _tmp1_;
+#line 39 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp3_ = gtk_adjustment_get_value (_tmp2_);
+#line 39 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp4_ = _tmp3_;
+#line 39 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ value = _tmp4_;
+#line 44 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp5_ = value;
+#line 44 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp6_ = pow (_tmp5_, (gdouble) 5);
+#line 44 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp7_ = pow ((gdouble) 90, (gdouble) 5);
+#line 44 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ self->priv->delay_value = (gint) (((((_tmp6_ / _tmp7_) * 60) * 60) * 24) + 5);
+#line 48 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp8_ = self->priv->delay_value;
+#line 48 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ if (_tmp8_ < 60) {
+#line 220 "SetBackgroundSlideshow.c"
+ gint _tmp9_;
+ gint _tmp10_;
+ gchar* _tmp11_;
+#line 49 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp9_ = self->priv->delay_value;
+#line 49 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp10_ = self->priv->delay_value;
+#line 49 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp11_ = g_strdup_printf (ngettext ("%d second", "%d seconds", (gulong) _tmp9_), _tmp10_);
+#line 49 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _g_free0 (text);
+#line 49 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ text = _tmp11_;
+#line 234 "SetBackgroundSlideshow.c"
+ } else {
+ gint _tmp12_;
+#line 50 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp12_ = self->priv->delay_value;
+#line 50 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ if (_tmp12_ < (60 * 60)) {
+#line 241 "SetBackgroundSlideshow.c"
+ gint minutes = 0;
+ gint _tmp13_;
+ gint _tmp14_;
+ gint _tmp15_;
+ gchar* _tmp16_;
+ gint _tmp17_;
+#line 51 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp13_ = self->priv->delay_value;
+#line 51 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ minutes = _tmp13_ / 60;
+#line 52 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp14_ = minutes;
+#line 52 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp15_ = minutes;
+#line 52 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp16_ = g_strdup_printf (ngettext ("%d minute", "%d minutes", (gulong) _tmp14_), _tmp15_);
+#line 52 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _g_free0 (text);
+#line 52 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ text = _tmp16_;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp17_ = minutes;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ self->priv->delay_value = _tmp17_ * 60;
+#line 266 "SetBackgroundSlideshow.c"
+ } else {
+ gint _tmp18_;
+#line 54 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp18_ = self->priv->delay_value;
+#line 54 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ if (_tmp18_ < ((60 * 60) * 24)) {
+#line 273 "SetBackgroundSlideshow.c"
+ gint hours = 0;
+ gint _tmp19_;
+ gint _tmp20_;
+ gint _tmp21_;
+ gchar* _tmp22_;
+ gint _tmp23_;
+#line 55 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp19_ = self->priv->delay_value;
+#line 55 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ hours = _tmp19_ / (60 * 60);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp20_ = hours;
+#line 56 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp21_ = hours;
+#line 56 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp22_ = g_strdup_printf (ngettext ("%d hour", "%d hours", (gulong) _tmp20_), _tmp21_);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _g_free0 (text);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ text = _tmp22_;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp23_ = hours;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ self->priv->delay_value = _tmp23_ * (60 * 60);
+#line 298 "SetBackgroundSlideshow.c"
+ } else {
+ gchar* _tmp24_;
+#line 59 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp24_ = g_strdup (_ ("1 day"));
+#line 59 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _g_free0 (text);
+#line 59 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ text = _tmp24_;
+#line 60 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ self->priv->delay_value = (60 * 60) * 24;
+#line 309 "SetBackgroundSlideshow.c"
+ }
+ }
+ }
+#line 63 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp25_ = self->priv->delay_value_label;
+#line 63 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp26_ = text;
+#line 63 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_label_set_label (_tmp25_, _tmp26_);
+#line 38 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _g_free0 (text);
+#line 321 "SetBackgroundSlideshow.c"
+}
+
+
+static void _set_background_slideshow_dialog_on_delay_scale_value_changed_gtk_range_value_changed (GtkRange* _sender, gpointer self) {
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ set_background_slideshow_dialog_on_delay_scale_value_changed ((SetBackgroundSlideshowDialog*) self);
+#line 328 "SetBackgroundSlideshow.c"
+}
+
+
+gboolean set_background_slideshow_dialog_execute (SetBackgroundSlideshowDialog* self, gint* delay_value, gboolean* desktop_background, gboolean* screensaver) {
+ gint _vala_delay_value = 0;
+ gboolean _vala_desktop_background = FALSE;
+ gboolean _vala_screensaver = FALSE;
+ gboolean result = FALSE;
+ gboolean _result_ = FALSE;
+ gint _tmp0_;
+ gint _tmp1_;
+ GtkCheckButton* _tmp2_;
+ gboolean _tmp3_;
+ gboolean _tmp4_;
+ GtkCheckButton* _tmp5_;
+ gboolean _tmp6_;
+ gboolean _tmp7_;
+#line 66 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ g_return_val_if_fail (IS_SET_BACKGROUND_SLIDESHOW_DIALOG (self), FALSE);
+#line 67 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 68 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp0_ = gtk_dialog_run (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog));
+#line 68 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _result_ = _tmp0_ == ((gint) GTK_RESPONSE_OK);
+#line 69 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_hide (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 71 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp1_ = self->priv->delay_value;
+#line 71 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _vala_delay_value = _tmp1_;
+#line 72 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp2_ = self->priv->desktop_background_checkbox;
+#line 72 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp3_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 72 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp4_ = _tmp3_;
+#line 72 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _vala_desktop_background = _tmp4_;
+#line 73 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp5_ = self->priv->screensaver_checkbox;
+#line 73 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp6_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 73 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _tmp7_ = _tmp6_;
+#line 73 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _vala_screensaver = _tmp7_;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_destroy (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 76 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ result = _result_;
+#line 76 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ if (delay_value) {
+#line 76 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ *delay_value = _vala_delay_value;
+#line 384 "SetBackgroundSlideshow.c"
+ }
+#line 76 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ if (desktop_background) {
+#line 76 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ *desktop_background = _vala_desktop_background;
+#line 390 "SetBackgroundSlideshow.c"
+ }
+#line 76 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ if (screensaver) {
+#line 76 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ *screensaver = _vala_screensaver;
+#line 396 "SetBackgroundSlideshow.c"
+ }
+#line 76 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ return result;
+#line 400 "SetBackgroundSlideshow.c"
+}
+
+
+static void set_background_slideshow_dialog_class_init (SetBackgroundSlideshowDialogClass * klass) {
+ gint SetBackgroundSlideshowDialog_private_offset;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ set_background_slideshow_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ g_type_class_add_private (klass, sizeof (SetBackgroundSlideshowDialogPrivate));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ ((GObjectClass *) klass)->constructed = (void (*) (GObject *)) set_background_slideshow_dialog_real_constructed;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ G_OBJECT_CLASS (klass)->finalize = set_background_slideshow_dialog_finalize;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ SetBackgroundSlideshowDialog_private_offset = g_type_class_get_instance_private_offset (klass);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/Shotwell/ui/set_background_slideshow_dialog.ui");
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "desktop_background_checkbox", FALSE, SetBackgroundSlideshowDialog_private_offset + G_STRUCT_OFFSET (SetBackgroundSlideshowDialogPrivate, desktop_background_checkbox));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "screensaver_checkbox", FALSE, SetBackgroundSlideshowDialog_private_offset + G_STRUCT_OFFSET (SetBackgroundSlideshowDialogPrivate, screensaver_checkbox));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "delay_scale", FALSE, SetBackgroundSlideshowDialog_private_offset + G_STRUCT_OFFSET (SetBackgroundSlideshowDialogPrivate, delay_scale));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "delay_value_label", FALSE, SetBackgroundSlideshowDialog_private_offset + G_STRUCT_OFFSET (SetBackgroundSlideshowDialogPrivate, delay_value_label));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_checkbox_clicked", G_CALLBACK(_set_background_slideshow_dialog_on_checkbox_clicked_gtk_toggle_button_toggled));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_class_bind_template_callback_full (GTK_WIDGET_CLASS (klass), "on_delay_scale_value_changed", G_CALLBACK(_set_background_slideshow_dialog_on_delay_scale_value_changed_gtk_range_value_changed));
+#line 430 "SetBackgroundSlideshow.c"
+}
+
+
+static void set_background_slideshow_dialog_instance_init (SetBackgroundSlideshowDialog * self) {
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ self->priv = SET_BACKGROUND_SLIDESHOW_DIALOG_GET_PRIVATE (self);
+#line 19 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ self->priv->delay_value = 0;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ gtk_widget_init_template (GTK_WIDGET (self));
+#line 441 "SetBackgroundSlideshow.c"
+}
+
+
+static void set_background_slideshow_dialog_finalize (GObject * obj) {
+ SetBackgroundSlideshowDialog * self;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SET_BACKGROUND_SLIDESHOW_DIALOG, SetBackgroundSlideshowDialog);
+#line 11 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _g_object_unref0 (self->priv->desktop_background_checkbox);
+#line 13 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _g_object_unref0 (self->priv->screensaver_checkbox);
+#line 15 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _g_object_unref0 (self->priv->delay_scale);
+#line 17 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ _g_object_unref0 (self->priv->delay_value_label);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/SetBackgroundSlideshow.vala"
+ G_OBJECT_CLASS (set_background_slideshow_dialog_parent_class)->finalize (obj);
+#line 459 "SetBackgroundSlideshow.c"
+}
+
+
+GType set_background_slideshow_dialog_get_type (void) {
+ static volatile gsize set_background_slideshow_dialog_type_id__volatile = 0;
+ if (g_once_init_enter (&set_background_slideshow_dialog_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (SetBackgroundSlideshowDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) set_background_slideshow_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SetBackgroundSlideshowDialog), 0, (GInstanceInitFunc) set_background_slideshow_dialog_instance_init, NULL };
+ GType set_background_slideshow_dialog_type_id;
+ set_background_slideshow_dialog_type_id = g_type_register_static (gtk_dialog_get_type (), "SetBackgroundSlideshowDialog", &g_define_type_info, 0);
+ g_once_init_leave (&set_background_slideshow_dialog_type_id__volatile, set_background_slideshow_dialog_type_id);
+ }
+ return set_background_slideshow_dialog_type_id__volatile;
+}
+
+
+
diff --git a/src/dialogs/SetBackgroundSlideshow.vala b/src/dialogs/SetBackgroundSlideshow.vala
new file mode 100644
index 0000000..914af76
--- /dev/null
+++ b/src/dialogs/SetBackgroundSlideshow.vala
@@ -0,0 +1,78 @@
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+[GtkTemplate (ui = "/org/gnome/Shotwell/ui/set_background_slideshow_dialog.ui")]
+public class SetBackgroundSlideshowDialog : Gtk.Dialog {
+ [GtkChild]
+ private Gtk.CheckButton desktop_background_checkbox;
+ [GtkChild]
+ private Gtk.CheckButton screensaver_checkbox;
+ [GtkChild]
+ private Gtk.Scale delay_scale;
+ [GtkChild]
+ private Gtk.Label delay_value_label;
+
+ private int delay_value = 0;
+
+ public SetBackgroundSlideshowDialog() {
+ Object(use_header_bar: Resources.use_header_bar());
+ this.set_transient_for (AppWindow.get_instance());
+ }
+
+ public override void constructed () {
+ on_delay_scale_value_changed ();
+ }
+
+ [GtkCallback]
+ private void on_checkbox_clicked() {
+ set_response_sensitive (Gtk.ResponseType.OK,
+ desktop_background_checkbox.active ||
+ screensaver_checkbox.active);
+ }
+
+ [GtkCallback]
+ private void on_delay_scale_value_changed() {
+ double value = delay_scale.adjustment.value;
+
+ // f(x)=x^5 allows to have fine-grained values (seconds) to the left
+ // and very coarse-grained values (hours) to the right of the slider.
+ // We limit maximum value to 1 day and minimum to 5 seconds.
+ delay_value = (int) (Math.pow(value, 5) / Math.pow(90, 5) * 60 * 60 * 24 + 5);
+
+ // convert to text and remove fractions from values > 1 minute
+ string text;
+ if (delay_value < 60) {
+ text = ngettext("%d second", "%d seconds", delay_value).printf(delay_value);
+ } else if (delay_value < 60 * 60) {
+ int minutes = delay_value / 60;
+ text = ngettext("%d minute", "%d minutes", minutes).printf(minutes);
+ delay_value = minutes * 60;
+ } else if (delay_value < 60 * 60 * 24) {
+ int hours = delay_value / (60 * 60);
+ text = ngettext("%d hour", "%d hours", hours).printf(hours);
+ delay_value = hours * (60 * 60);
+ } else {
+ text = _("1 day");
+ delay_value = 60 * 60 * 24;
+ }
+
+ delay_value_label.label = text;
+ }
+
+ public bool execute(out int delay_value, out bool desktop_background, out bool screensaver) {
+ this.show_all();
+ var result = this.run() == Gtk.ResponseType.OK;
+ this.hide ();
+
+ delay_value = this.delay_value;
+ desktop_background = desktop_background_checkbox.active;
+ screensaver = screensaver_checkbox.active;
+
+ this.destroy();
+ return result;
+ }
+}
diff --git a/src/dialogs/TextEntry.c b/src/dialogs/TextEntry.c
new file mode 100644
index 0000000..6fa478f
--- /dev/null
+++ b/src/dialogs/TextEntry.c
@@ -0,0 +1,398 @@
+/* TextEntry.c generated by valac 0.36.6, the Vala compiler
+ * generated from TextEntry.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gee.h>
+
+
+#define TYPE_TEXT_ENTRY_DIALOG (text_entry_dialog_get_type ())
+#define TEXT_ENTRY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TEXT_ENTRY_DIALOG, TextEntryDialog))
+#define TEXT_ENTRY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TEXT_ENTRY_DIALOG, TextEntryDialogClass))
+#define IS_TEXT_ENTRY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TEXT_ENTRY_DIALOG))
+#define IS_TEXT_ENTRY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TEXT_ENTRY_DIALOG))
+#define TEXT_ENTRY_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TEXT_ENTRY_DIALOG, TextEntryDialogClass))
+
+typedef struct _TextEntryDialog TextEntryDialog;
+typedef struct _TextEntryDialogClass TextEntryDialogClass;
+typedef struct _TextEntryDialogPrivate TextEntryDialogPrivate;
+#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_ENTRY_MULTI_COMPLETION (entry_multi_completion_get_type ())
+#define ENTRY_MULTI_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ENTRY_MULTI_COMPLETION, EntryMultiCompletion))
+#define ENTRY_MULTI_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ENTRY_MULTI_COMPLETION, EntryMultiCompletionClass))
+#define IS_ENTRY_MULTI_COMPLETION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ENTRY_MULTI_COMPLETION))
+#define IS_ENTRY_MULTI_COMPLETION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ENTRY_MULTI_COMPLETION))
+#define ENTRY_MULTI_COMPLETION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ENTRY_MULTI_COMPLETION, EntryMultiCompletionClass))
+
+typedef struct _EntryMultiCompletion EntryMultiCompletion;
+typedef struct _EntryMultiCompletionClass EntryMultiCompletionClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+struct _TextEntryDialog {
+ GtkDialog parent_instance;
+ TextEntryDialogPrivate * priv;
+};
+
+struct _TextEntryDialogClass {
+ GtkDialogClass parent_class;
+};
+
+typedef gboolean (*TextEntryDialogOnModifyValidateType) (const gchar* text, void* user_data);
+struct _TextEntryDialogPrivate {
+ TextEntryDialogOnModifyValidateType on_modify_validate;
+ gpointer on_modify_validate_target;
+ GtkEntry* entry;
+ GtkLabel* label;
+};
+
+
+static gpointer text_entry_dialog_parent_class = NULL;
+
+GType text_entry_dialog_get_type (void) G_GNUC_CONST;
+#define TEXT_ENTRY_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_TEXT_ENTRY_DIALOG, TextEntryDialogPrivate))
+enum {
+ TEXT_ENTRY_DIALOG_DUMMY_PROPERTY
+};
+TextEntryDialog* text_entry_dialog_new (void);
+TextEntryDialog* text_entry_dialog_construct (GType object_type);
+gint resources_use_header_bar (void);
+void text_entry_dialog_setup (TextEntryDialog* self, TextEntryDialogOnModifyValidateType modify_validate, void* modify_validate_target, const gchar* title, const gchar* label, const gchar* initial_text, GeeCollection* completion_list, const gchar* completion_delimiter);
+GType page_window_get_type (void) G_GNUC_CONST;
+GType app_window_get_type (void) G_GNUC_CONST;
+AppWindow* app_window_get_instance (void);
+void text_entry_dialog_on_entry_changed (TextEntryDialog* self);
+static void _text_entry_dialog_on_entry_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self);
+GType entry_multi_completion_get_type (void) G_GNUC_CONST;
+EntryMultiCompletion* entry_multi_completion_new (GeeCollection* completion_list, const gchar* delimiter);
+EntryMultiCompletion* entry_multi_completion_construct (GType object_type, GeeCollection* completion_list, const gchar* delimiter);
+gchar* text_entry_dialog_execute (TextEntryDialog* self);
+static void text_entry_dialog_finalize (GObject * obj);
+
+
+TextEntryDialog* text_entry_dialog_construct (GType object_type) {
+ TextEntryDialog * self = NULL;
+ gint _tmp0_;
+#line 21 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp0_ = resources_use_header_bar ();
+#line 21 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ self = (TextEntryDialog*) g_object_new (object_type, "use-header-bar", _tmp0_, NULL);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ return self;
+#line 113 "TextEntry.c"
+}
+
+
+TextEntryDialog* text_entry_dialog_new (void) {
+#line 20 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ return text_entry_dialog_construct (TYPE_TEXT_ENTRY_DIALOG);
+#line 120 "TextEntry.c"
+}
+
+
+static void _text_entry_dialog_on_entry_changed_gtk_editable_changed (GtkEditable* _sender, gpointer self) {
+#line 35 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ text_entry_dialog_on_entry_changed ((TextEntryDialog*) self);
+#line 127 "TextEntry.c"
+}
+
+
+void text_entry_dialog_setup (TextEntryDialog* self, TextEntryDialogOnModifyValidateType modify_validate, void* modify_validate_target, const gchar* title, const gchar* label, const gchar* initial_text, GeeCollection* completion_list, const gchar* completion_delimiter) {
+ const gchar* _tmp0_;
+ AppWindow* _tmp1_;
+ AppWindow* _tmp2_;
+ GdkWindow* _tmp3_;
+ AppWindow* _tmp4_;
+ AppWindow* _tmp5_;
+ TextEntryDialogOnModifyValidateType _tmp6_;
+ void* _tmp6__target;
+ GtkLabel* _tmp7_;
+ const gchar* _tmp8_;
+ const gchar* _tmp9_ = NULL;
+ const gchar* _tmp10_;
+ GtkEntry* _tmp12_;
+ GtkEntry* _tmp13_;
+ GtkEntry* _tmp14_;
+ GeeCollection* _tmp15_;
+#line 24 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ g_return_if_fail (IS_TEXT_ENTRY_DIALOG (self));
+#line 24 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ g_return_if_fail (title != NULL);
+#line 24 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ g_return_if_fail (label != NULL);
+#line 24 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ g_return_if_fail ((completion_list == NULL) || GEE_IS_COLLECTION (completion_list));
+#line 26 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp0_ = title;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_window_set_title (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), _tmp0_);
+#line 27 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp1_ = app_window_get_instance ();
+#line 27 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp2_ = _tmp1_;
+#line 27 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp3_ = gtk_widget_get_parent_window (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_widget_get_type (), GtkWidget));
+#line 27 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_widget_set_parent_window (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget), _tmp3_);
+#line 27 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _g_object_unref0 (_tmp2_);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp4_ = app_window_get_instance ();
+#line 28 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp5_ = _tmp4_;
+#line 28 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_window_set_transient_for (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_window_get_type (), GtkWindow));
+#line 28 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _g_object_unref0 (_tmp5_);
+#line 29 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp6_ = modify_validate;
+#line 29 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp6__target = modify_validate_target;
+#line 29 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ self->priv->on_modify_validate = _tmp6_;
+#line 29 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ self->priv->on_modify_validate_target = _tmp6__target;
+#line 31 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp7_ = self->priv->label;
+#line 31 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp8_ = label;
+#line 31 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_label_set_text (_tmp7_, _tmp8_);
+#line 33 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp10_ = initial_text;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ if (_tmp10_ != NULL) {
+#line 196 "TextEntry.c"
+ const gchar* _tmp11_;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp11_ = initial_text;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp9_ = _tmp11_;
+#line 202 "TextEntry.c"
+ } else {
+#line 33 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp9_ = "";
+#line 206 "TextEntry.c"
+ }
+#line 33 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp12_ = self->priv->entry;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_entry_set_text (_tmp12_, _tmp9_);
+#line 34 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp13_ = self->priv->entry;
+#line 34 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_widget_grab_focus (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, gtk_widget_get_type (), GtkWidget));
+#line 35 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp14_ = self->priv->entry;
+#line 35 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GTK_TYPE_EDITABLE, GtkEditable), "changed", (GCallback) _text_entry_dialog_on_entry_changed_gtk_editable_changed, self, 0);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp15_ = completion_list;
+#line 37 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ if (_tmp15_ != NULL) {
+#line 224 "TextEntry.c"
+ EntryMultiCompletion* completion = NULL;
+ GeeCollection* _tmp16_;
+ const gchar* _tmp17_;
+ EntryMultiCompletion* _tmp18_;
+ GtkEntry* _tmp19_;
+ EntryMultiCompletion* _tmp20_;
+#line 38 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp16_ = completion_list;
+#line 38 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp17_ = completion_delimiter;
+#line 38 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp18_ = entry_multi_completion_new (_tmp16_, _tmp17_);
+#line 38 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ completion = _tmp18_;
+#line 40 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp19_ = self->priv->entry;
+#line 40 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp20_ = completion;
+#line 40 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_entry_set_completion (_tmp19_, G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, gtk_entry_completion_get_type (), GtkEntryCompletion));
+#line 37 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _g_object_unref0 (completion);
+#line 247 "TextEntry.c"
+ }
+#line 43 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_dialog_set_default_response (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), (gint) GTK_RESPONSE_OK);
+#line 251 "TextEntry.c"
+}
+
+
+gchar* text_entry_dialog_execute (TextEntryDialog* self) {
+ gchar* result = NULL;
+ gchar* text = NULL;
+ TextEntryDialogOnModifyValidateType _tmp0_;
+ void* _tmp0__target;
+ GtkEntry* _tmp1_;
+ const gchar* _tmp2_;
+ gboolean _tmp3_;
+ gint _tmp4_;
+ GtkEntry* _tmp8_;
+ guint _tmp9_;
+#line 46 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ g_return_val_if_fail (IS_TEXT_ENTRY_DIALOG (self), NULL);
+#line 47 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ text = NULL;
+#line 50 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp0_ = self->priv->on_modify_validate;
+#line 50 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp0__target = self->priv->on_modify_validate_target;
+#line 50 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp1_ = self->priv->entry;
+#line 50 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp2_ = gtk_entry_get_text (_tmp1_);
+#line 50 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp3_ = _tmp0_ (_tmp2_, _tmp0__target);
+#line 50 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_dialog_set_response_sensitive (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), (gint) GTK_RESPONSE_OK, _tmp3_);
+#line 52 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 54 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp4_ = gtk_dialog_run (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog));
+#line 54 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ if (_tmp4_ == ((gint) GTK_RESPONSE_OK)) {
+#line 288 "TextEntry.c"
+ GtkEntry* _tmp5_;
+ const gchar* _tmp6_;
+ gchar* _tmp7_;
+#line 55 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp5_ = self->priv->entry;
+#line 55 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp6_ = gtk_entry_get_text (_tmp5_);
+#line 55 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp7_ = g_strdup (_tmp6_);
+#line 55 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _g_free0 (text);
+#line 55 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ text = _tmp7_;
+#line 302 "TextEntry.c"
+ }
+#line 57 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp8_ = self->priv->entry;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ g_signal_parse_name ("changed", GTK_TYPE_EDITABLE, &_tmp9_, NULL, FALSE);
+#line 57 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, GTK_TYPE_EDITABLE, GtkEditable), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp9_, 0, NULL, (GCallback) _text_entry_dialog_on_entry_changed_gtk_editable_changed, self);
+#line 58 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_widget_destroy (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 60 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ result = text;
+#line 60 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ return result;
+#line 316 "TextEntry.c"
+}
+
+
+void text_entry_dialog_on_entry_changed (TextEntryDialog* self) {
+ TextEntryDialogOnModifyValidateType _tmp0_;
+ void* _tmp0__target;
+ GtkEntry* _tmp1_;
+ const gchar* _tmp2_;
+ gboolean _tmp3_;
+#line 63 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ g_return_if_fail (IS_TEXT_ENTRY_DIALOG (self));
+#line 64 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp0_ = self->priv->on_modify_validate;
+#line 64 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp0__target = self->priv->on_modify_validate_target;
+#line 64 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp1_ = self->priv->entry;
+#line 64 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp2_ = gtk_entry_get_text (_tmp1_);
+#line 64 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _tmp3_ = _tmp0_ (_tmp2_, _tmp0__target);
+#line 64 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_dialog_set_response_sensitive (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), (gint) GTK_RESPONSE_OK, _tmp3_);
+#line 340 "TextEntry.c"
+}
+
+
+static void text_entry_dialog_class_init (TextEntryDialogClass * klass) {
+ gint TextEntryDialog_private_offset;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ text_entry_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ g_type_class_add_private (klass, sizeof (TextEntryDialogPrivate));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ G_OBJECT_CLASS (klass)->finalize = text_entry_dialog_finalize;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ TextEntryDialog_private_offset = g_type_class_get_instance_private_offset (klass);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/Shotwell/ui/textentrydialog.ui");
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "entry", FALSE, TextEntryDialog_private_offset + G_STRUCT_OFFSET (TextEntryDialogPrivate, entry));
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "label", FALSE, TextEntryDialog_private_offset + G_STRUCT_OFFSET (TextEntryDialogPrivate, label));
+#line 360 "TextEntry.c"
+}
+
+
+static void text_entry_dialog_instance_init (TextEntryDialog * self) {
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ self->priv = TEXT_ENTRY_DIALOG_GET_PRIVATE (self);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ gtk_widget_init_template (GTK_WIDGET (self));
+#line 369 "TextEntry.c"
+}
+
+
+static void text_entry_dialog_finalize (GObject * obj) {
+ TextEntryDialog * self;
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_TEXT_ENTRY_DIALOG, TextEntryDialog);
+#line 15 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _g_object_unref0 (self->priv->entry);
+#line 18 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ _g_object_unref0 (self->priv->label);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/TextEntry.vala"
+ G_OBJECT_CLASS (text_entry_dialog_parent_class)->finalize (obj);
+#line 383 "TextEntry.c"
+}
+
+
+GType text_entry_dialog_get_type (void) {
+ static volatile gsize text_entry_dialog_type_id__volatile = 0;
+ if (g_once_init_enter (&text_entry_dialog_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (TextEntryDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) text_entry_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TextEntryDialog), 0, (GInstanceInitFunc) text_entry_dialog_instance_init, NULL };
+ GType text_entry_dialog_type_id;
+ text_entry_dialog_type_id = g_type_register_static (gtk_dialog_get_type (), "TextEntryDialog", &g_define_type_info, 0);
+ g_once_init_leave (&text_entry_dialog_type_id__volatile, text_entry_dialog_type_id);
+ }
+ return text_entry_dialog_type_id__volatile;
+}
+
+
+
diff --git a/src/dialogs/TextEntry.vala b/src/dialogs/TextEntry.vala
new file mode 100644
index 0000000..d82fdbd
--- /dev/null
+++ b/src/dialogs/TextEntry.vala
@@ -0,0 +1,66 @@
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+[GtkTemplate (ui = "/org/gnome/Shotwell/ui/textentrydialog.ui")]
+public class TextEntryDialog : Gtk.Dialog {
+ public delegate bool OnModifyValidateType(string text);
+
+ private unowned OnModifyValidateType on_modify_validate;
+
+ [GtkChild]
+ private Gtk.Entry entry;
+
+ [GtkChild]
+ private Gtk.Label label;
+
+ public TextEntryDialog() {
+ Object (use_header_bar: Resources.use_header_bar());
+ }
+
+ public void setup(OnModifyValidateType? modify_validate, string title, string label,
+ string? initial_text, Gee.Collection<string>? completion_list, string? completion_delimiter) {
+ set_title(title);
+ set_parent_window(AppWindow.get_instance().get_parent_window());
+ set_transient_for(AppWindow.get_instance());
+ on_modify_validate = modify_validate;
+
+ this.label.set_text(label);
+
+ entry.set_text(initial_text != null ? initial_text : "");
+ entry.grab_focus();
+ entry.changed.connect(on_entry_changed);
+
+ if (completion_list != null) { // Textfield with autocompletion
+ EntryMultiCompletion completion = new EntryMultiCompletion(completion_list,
+ completion_delimiter);
+ entry.set_completion(completion);
+ }
+
+ set_default_response(Gtk.ResponseType.OK);
+ }
+
+ public string? execute() {
+ string? text = null;
+
+ // validate entry to start with
+ set_response_sensitive(Gtk.ResponseType.OK, on_modify_validate(entry.get_text()));
+
+ show_all();
+
+ if (run() == Gtk.ResponseType.OK)
+ text = entry.get_text();
+
+ entry.changed.disconnect(on_entry_changed);
+ destroy();
+
+ return text;
+ }
+
+ public void on_entry_changed() {
+ set_response_sensitive(Gtk.ResponseType.OK, on_modify_validate(entry.get_text()));
+ }
+}
diff --git a/src/dialogs/WelcomeDialog.c b/src/dialogs/WelcomeDialog.c
new file mode 100644
index 0000000..153175b
--- /dev/null
+++ b/src/dialogs/WelcomeDialog.c
@@ -0,0 +1,1377 @@
+/* WelcomeDialog.c generated by valac 0.36.6, the Vala compiler
+ * generated from WelcomeDialog.vala, do not modify */
+
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gtk/gtk.h>
+#include <glib/gi18n-lib.h>
+#include <gdk/gdk.h>
+#include <gio/gio.h>
+
+
+#define TYPE_WELCOME_SERVICE_ENTRY (welcome_service_entry_get_type ())
+#define WELCOME_SERVICE_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_WELCOME_SERVICE_ENTRY, WelcomeServiceEntry))
+#define IS_WELCOME_SERVICE_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_WELCOME_SERVICE_ENTRY))
+#define WELCOME_SERVICE_ENTRY_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_WELCOME_SERVICE_ENTRY, WelcomeServiceEntryIface))
+
+typedef struct _WelcomeServiceEntry WelcomeServiceEntry;
+typedef struct _WelcomeServiceEntryIface WelcomeServiceEntryIface;
+
+#define TYPE_WELCOME_DIALOG (welcome_dialog_get_type ())
+#define WELCOME_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_WELCOME_DIALOG, WelcomeDialog))
+#define WELCOME_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_WELCOME_DIALOG, WelcomeDialogClass))
+#define IS_WELCOME_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_WELCOME_DIALOG))
+#define IS_WELCOME_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_WELCOME_DIALOG))
+#define WELCOME_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_WELCOME_DIALOG, WelcomeDialogClass))
+
+typedef struct _WelcomeDialog WelcomeDialog;
+typedef struct _WelcomeDialogClass WelcomeDialogClass;
+typedef struct _WelcomeDialogPrivate WelcomeDialogPrivate;
+
+#define SPIT_DATA_IMPORTS_TYPE_WELCOME_IMPORT_META_HOST (spit_data_imports_welcome_import_meta_host_get_type ())
+#define SPIT_DATA_IMPORTS_WELCOME_IMPORT_META_HOST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SPIT_DATA_IMPORTS_TYPE_WELCOME_IMPORT_META_HOST, SpitDataImportsWelcomeImportMetaHost))
+#define SPIT_DATA_IMPORTS_WELCOME_IMPORT_META_HOST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SPIT_DATA_IMPORTS_TYPE_WELCOME_IMPORT_META_HOST, SpitDataImportsWelcomeImportMetaHostClass))
+#define SPIT_DATA_IMPORTS_IS_WELCOME_IMPORT_META_HOST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SPIT_DATA_IMPORTS_TYPE_WELCOME_IMPORT_META_HOST))
+#define SPIT_DATA_IMPORTS_IS_WELCOME_IMPORT_META_HOST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SPIT_DATA_IMPORTS_TYPE_WELCOME_IMPORT_META_HOST))
+#define SPIT_DATA_IMPORTS_WELCOME_IMPORT_META_HOST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SPIT_DATA_IMPORTS_TYPE_WELCOME_IMPORT_META_HOST, SpitDataImportsWelcomeImportMetaHostClass))
+
+typedef struct _SpitDataImportsWelcomeImportMetaHost SpitDataImportsWelcomeImportMetaHost;
+typedef struct _SpitDataImportsWelcomeImportMetaHostClass SpitDataImportsWelcomeImportMetaHostClass;
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+
+struct _WelcomeServiceEntryIface {
+ GTypeInterface parent_iface;
+ gchar* (*get_service_name) (WelcomeServiceEntry* self);
+ void (*execute) (WelcomeServiceEntry* self);
+};
+
+struct _WelcomeDialog {
+ GtkDialog parent_instance;
+ WelcomeDialogPrivate * priv;
+};
+
+struct _WelcomeDialogClass {
+ GtkDialogClass parent_class;
+};
+
+struct _WelcomeDialogPrivate {
+ GtkCheckButton* hide_button;
+ GtkCheckButton* system_pictures_import_check;
+ GtkCheckButton** external_import_checks;
+ gint external_import_checks_length1;
+ gint _external_import_checks_size_;
+ WelcomeServiceEntry** external_import_entries;
+ gint external_import_entries_length1;
+ gint _external_import_entries_size_;
+ GtkLabel* secondary_text;
+ GtkLabel* instruction_header;
+ GtkBox* import_content;
+ GtkBox* import_action_checkbox_packer;
+ GtkBox* external_import_action_checkbox_packer;
+ SpitDataImportsWelcomeImportMetaHost* import_meta_host;
+ gboolean import_content_already_installed;
+ gboolean ok_clicked;
+};
+
+
+static gpointer welcome_dialog_parent_class = NULL;
+
+GType welcome_service_entry_get_type (void) G_GNUC_CONST;
+gchar* welcome_service_entry_get_service_name (WelcomeServiceEntry* self);
+void welcome_service_entry_execute (WelcomeServiceEntry* self);
+GType welcome_dialog_get_type (void) G_GNUC_CONST;
+GType spit_data_imports_welcome_import_meta_host_get_type (void) G_GNUC_CONST;
+#define WELCOME_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_WELCOME_DIALOG, WelcomeDialogPrivate))
+enum {
+ WELCOME_DIALOG_DUMMY_PROPERTY
+};
+WelcomeDialog* welcome_dialog_new (GtkWindow* owner);
+WelcomeDialog* welcome_dialog_construct (GType object_type, GtkWindow* owner);
+gint resources_use_header_bar (void);
+SpitDataImportsWelcomeImportMetaHost* spit_data_imports_welcome_import_meta_host_new (WelcomeDialog* dialog);
+SpitDataImportsWelcomeImportMetaHost* spit_data_imports_welcome_import_meta_host_construct (GType object_type, WelcomeDialog* dialog);
+static gboolean welcome_dialog_is_system_pictures_import_possible (void);
+#define RESOURCES_OK_LABEL _ ("_OK")
+gchar* get_display_pathname (GFile* file);
+GFile* app_dirs_get_import_dir (void);
+static void welcome_dialog_install_import_content (WelcomeDialog* self);
+void spit_data_imports_welcome_import_meta_host_start (SpitDataImportsWelcomeImportMetaHost* self);
+void welcome_dialog_install_service_entry (WelcomeDialog* self, WelcomeServiceEntry* entry);
+static void _vala_array_add4 (WelcomeServiceEntry** * array, int* length, int* size, WelcomeServiceEntry* value);
+static void _vala_array_add5 (GtkCheckButton** * array, int* length, int* size, GtkCheckButton* value);
+static void welcome_dialog_on_dismiss (WelcomeDialog* self, gint resp);
+gboolean welcome_dialog_execute (WelcomeDialog* self, WelcomeServiceEntry*** selected_import_entries, int* selected_import_entries_length1, gboolean* do_system_pictures_import);
+static void _welcome_dialog_on_dismiss_gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self);
+static void _vala_array_add6 (WelcomeServiceEntry** * array, int* length, int* size, WelcomeServiceEntry* value);
+static WelcomeServiceEntry** _vala_array_dup1 (WelcomeServiceEntry** self, int length);
+static void welcome_dialog_finalize (GObject * obj);
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
+
+
+gchar* welcome_service_entry_get_service_name (WelcomeServiceEntry* self) {
+#line 9 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_return_val_if_fail (IS_WELCOME_SERVICE_ENTRY (self), NULL);
+#line 9 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return WELCOME_SERVICE_ENTRY_GET_INTERFACE (self)->get_service_name (self);
+#line 129 "WelcomeDialog.c"
+}
+
+
+void welcome_service_entry_execute (WelcomeServiceEntry* self) {
+#line 11 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_return_if_fail (IS_WELCOME_SERVICE_ENTRY (self));
+#line 11 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ WELCOME_SERVICE_ENTRY_GET_INTERFACE (self)->execute (self);
+#line 138 "WelcomeDialog.c"
+}
+
+
+static void welcome_service_entry_base_init (WelcomeServiceEntryIface * iface) {
+#line 8 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ static gboolean initialized = FALSE;
+#line 8 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (!initialized) {
+#line 8 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ initialized = TRUE;
+#line 149 "WelcomeDialog.c"
+ }
+}
+
+
+GType welcome_service_entry_get_type (void) {
+ static volatile gsize welcome_service_entry_type_id__volatile = 0;
+ if (g_once_init_enter (&welcome_service_entry_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (WelcomeServiceEntryIface), (GBaseInitFunc) welcome_service_entry_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
+ GType welcome_service_entry_type_id;
+ welcome_service_entry_type_id = g_type_register_static (G_TYPE_INTERFACE, "WelcomeServiceEntry", &g_define_type_info, 0);
+ g_type_interface_add_prerequisite (welcome_service_entry_type_id, G_TYPE_OBJECT);
+ g_once_init_leave (&welcome_service_entry_type_id__volatile, welcome_service_entry_type_id);
+ }
+ return welcome_service_entry_type_id__volatile;
+}
+
+
+static gpointer _g_object_ref0 (gpointer self) {
+#line 32 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return self ? g_object_ref (self) : NULL;
+#line 170 "WelcomeDialog.c"
+}
+
+
+WelcomeDialog* welcome_dialog_construct (GType object_type, GtkWindow* owner) {
+ WelcomeDialog * self = NULL;
+ gint _tmp0_;
+ SpitDataImportsWelcomeImportMetaHost* _tmp1_;
+ gboolean show_system_pictures_import = FALSE;
+ gboolean _tmp2_;
+ GtkWidget* ok_button = NULL;
+ GtkWidget* _tmp3_;
+ GtkWidget* _tmp4_;
+ GtkWindow* _tmp5_;
+ GtkLabel* primary_text = NULL;
+ GtkLabel* _tmp6_;
+ GtkLabel* _tmp7_;
+ gchar* _tmp8_;
+ gchar* _tmp9_;
+ GtkLabel* _tmp10_;
+ GtkLabel* _tmp11_;
+ GtkLabel* _tmp12_;
+ GtkLabel* _tmp13_;
+ gchar* _tmp14_;
+ gchar* _tmp15_;
+ GtkLabel* _tmp16_;
+ GtkLabel* _tmp17_;
+ GtkImage* image = NULL;
+ GtkImage* _tmp18_;
+ GtkBox* header_text = NULL;
+ GtkBox* _tmp19_;
+ GtkBox* _tmp20_;
+ GtkLabel* _tmp21_;
+ GtkBox* _tmp22_;
+ GtkLabel* _tmp23_;
+ GtkBox* header_content = NULL;
+ GtkBox* _tmp24_;
+ GtkBox* _tmp25_;
+ GtkImage* _tmp26_;
+ GtkBox* _tmp27_;
+ GtkBox* _tmp28_;
+ GtkLabel* instructions = NULL;
+ GtkLabel* _tmp29_;
+ gchar* indent_prefix = NULL;
+ gchar* _tmp30_;
+ const gchar* _tmp31_ = NULL;
+ GtkTextDirection _tmp32_;
+ gchar* arrow_glyph = NULL;
+ gchar* _tmp33_;
+ GtkLabel* _tmp34_;
+ const gchar* _tmp35_;
+ gchar* _tmp36_;
+ gchar* _tmp37_;
+ const gchar* _tmp38_;
+ gchar* _tmp39_;
+ gchar* _tmp40_;
+ gchar* _tmp41_;
+ gchar* _tmp42_;
+ const gchar* _tmp43_;
+ gchar* _tmp44_;
+ gchar* _tmp45_;
+ gchar* _tmp46_;
+ gchar* _tmp47_;
+ const gchar* _tmp48_;
+ gchar* _tmp49_;
+ gchar* _tmp50_;
+ gchar* _tmp51_;
+ gchar* _tmp52_;
+ GtkLabel* _tmp53_;
+ GtkLabel* _tmp54_;
+ GtkBox* _tmp55_;
+ GtkBox* _tmp56_;
+ GtkBox* _tmp57_;
+ GtkBox* _tmp58_;
+ gboolean _tmp59_;
+ GtkLabel* _tmp70_;
+ GtkLabel* _tmp71_;
+ GtkLabel* _tmp72_;
+ GtkLabel* _tmp73_;
+ GtkBox* content = NULL;
+ GtkBox* _tmp74_;
+ GtkBox* _tmp75_;
+ GtkBox* _tmp76_;
+ GtkBox* _tmp77_;
+ GtkLabel* _tmp78_;
+ GtkCheckButton* _tmp79_;
+ GtkCheckButton* _tmp80_;
+ GtkCheckButton* _tmp81_;
+ GtkBox* _tmp82_;
+ GtkWidget* _tmp83_;
+ SpitDataImportsWelcomeImportMetaHost* _tmp84_;
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_return_val_if_fail (GTK_IS_WINDOW (owner), NULL);
+#line 29 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp0_ = resources_use_header_bar ();
+#line 29 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self = (WelcomeDialog*) g_object_new (object_type, "use-header-bar", _tmp0_, NULL);
+#line 30 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp1_ = spit_data_imports_welcome_import_meta_host_new (self);
+#line 30 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->import_meta_host);
+#line 30 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->import_meta_host = _tmp1_;
+#line 31 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp2_ = welcome_dialog_is_system_pictures_import_possible ();
+#line 31 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ show_system_pictures_import = _tmp2_;
+#line 32 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp3_ = gtk_dialog_add_button (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), RESOURCES_OK_LABEL, (gint) GTK_RESPONSE_CLOSE);
+#line 32 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp4_ = _g_object_ref0 (_tmp3_);
+#line 32 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ ok_button = _tmp4_;
+#line 33 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_dialog_set_default_response (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), (gint) GTK_RESPONSE_CLOSE);
+#line 35 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_window_set_title (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), _ ("Welcome!"));
+#line 36 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_window_set_resizable (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), FALSE);
+#line 37 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_window_set_type_hint (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), GDK_WINDOW_TYPE_HINT_DIALOG);
+#line 38 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp5_ = owner;
+#line 38 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_window_set_transient_for (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), _tmp5_);
+#line 40 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp6_ = (GtkLabel*) gtk_label_new ("");
+#line 40 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp6_);
+#line 40 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ primary_text = _tmp6_;
+#line 41 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp7_ = primary_text;
+#line 41 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp8_ = g_strdup_printf ("<span size=\"large\" weight=\"bold\">%s</span>", _ ("Welcome to Shotwell!"));
+#line 41 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp9_ = _tmp8_;
+#line 41 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_markup (_tmp7_, _tmp9_);
+#line 41 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp9_);
+#line 43 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp10_ = primary_text;
+#line 43 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_xalign (_tmp10_, 0.0f);
+#line 44 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp11_ = primary_text;
+#line 44 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_yalign (_tmp11_, 0.5f);
+#line 45 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp12_ = (GtkLabel*) gtk_label_new ("");
+#line 45 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp12_);
+#line 45 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->secondary_text);
+#line 45 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->secondary_text = _tmp12_;
+#line 46 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp13_ = self->priv->secondary_text;
+#line 46 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp14_ = g_strdup_printf ("<span weight=\"normal\">%s</span>", _ ("To get started, import photos in any of these ways:"));
+#line 46 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp15_ = _tmp14_;
+#line 46 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_markup (_tmp13_, _tmp15_);
+#line 46 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp15_);
+#line 48 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp16_ = self->priv->secondary_text;
+#line 48 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_xalign (_tmp16_, 0.0f);
+#line 49 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp17_ = self->priv->secondary_text;
+#line 49 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_yalign (_tmp17_, 0.5f);
+#line 50 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp18_ = (GtkImage*) gtk_image_new_from_icon_name ("shotwell", GTK_ICON_SIZE_DIALOG);
+#line 50 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp18_);
+#line 50 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ image = _tmp18_;
+#line 52 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp19_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+#line 52 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp19_);
+#line 52 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ header_text = _tmp19_;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp20_ = header_text;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp21_ = primary_text;
+#line 53 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_box_pack_start (_tmp20_, G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 5);
+#line 54 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp22_ = header_text;
+#line 54 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp23_ = self->priv->secondary_text;
+#line 54 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_box_pack_start (_tmp22_, G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp24_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp24_);
+#line 56 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ header_content = _tmp24_;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp25_ = header_content;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp26_ = image;
+#line 57 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_box_pack_start (_tmp25_, G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 58 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp27_ = header_content;
+#line 58 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp28_ = header_text;
+#line 58 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_box_pack_start (_tmp27_, G_TYPE_CHECK_INSTANCE_CAST (_tmp28_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 60 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp29_ = (GtkLabel*) gtk_label_new ("");
+#line 60 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp29_);
+#line 60 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ instructions = _tmp29_;
+#line 61 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp30_ = g_strdup (" ");
+#line 61 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ indent_prefix = _tmp30_;
+#line 63 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp32_ = gtk_widget_get_direction (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 63 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (_tmp32_ == GTK_TEXT_DIR_RTL) {
+#line 63 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp31_ = "◂";
+#line 403 "WelcomeDialog.c"
+ } else {
+#line 63 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp31_ = "▸";
+#line 407 "WelcomeDialog.c"
+ }
+#line 63 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp33_ = g_strdup (_tmp31_);
+#line 63 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ arrow_glyph = _tmp33_;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp34_ = instructions;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp35_ = indent_prefix;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp36_ = g_strconcat (_tmp35_, "&#8226; %s\n", NULL);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp37_ = _tmp36_;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp38_ = indent_prefix;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp39_ = g_strconcat (_tmp38_, "&#8226; %s\n", NULL);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp40_ = _tmp39_;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp41_ = g_strconcat (_tmp37_, _tmp40_, NULL);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp42_ = _tmp41_;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp43_ = indent_prefix;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp44_ = g_strconcat (_tmp43_, "&#8226; %s", NULL);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp45_ = _tmp44_;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp46_ = g_strconcat (_tmp42_, _tmp45_, NULL);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp47_ = _tmp46_;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp48_ = arrow_glyph;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp49_ = g_strdup_printf (_ ("Choose <span weight=\"bold\">File %s Import From Folder</span>"), _tmp48_);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp50_ = _tmp49_;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp51_ = g_strdup_printf (_tmp47_, _tmp50_, _ ("Drag and drop photos onto the Shotwell window"), _ ("Connect a camera to your computer and import"));
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp52_ = _tmp51_;
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_markup (_tmp34_, _tmp52_);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp52_);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp50_);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp47_);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp45_);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp42_);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp40_);
+#line 65 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp37_);
+#line 70 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp53_ = instructions;
+#line 70 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_xalign (_tmp53_, 0.0f);
+#line 71 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp54_ = instructions;
+#line 71 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_yalign (_tmp54_, 0.5f);
+#line 73 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp55_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
+#line 73 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp55_);
+#line 73 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->import_action_checkbox_packer);
+#line 73 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->import_action_checkbox_packer = _tmp55_;
+#line 75 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp56_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp56_);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->external_import_action_checkbox_packer);
+#line 75 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->external_import_action_checkbox_packer = _tmp56_;
+#line 76 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp57_ = self->priv->import_action_checkbox_packer;
+#line 76 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp58_ = self->priv->external_import_action_checkbox_packer;
+#line 76 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp57_, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (_tmp58_, gtk_widget_get_type (), GtkWidget));
+#line 78 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp59_ = show_system_pictures_import;
+#line 78 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (_tmp59_) {
+#line 501 "WelcomeDialog.c"
+ GFile* _tmp60_;
+ GFile* _tmp61_;
+ gchar* _tmp62_;
+ gchar* _tmp63_;
+ gchar* _tmp64_;
+ gchar* _tmp65_;
+ GtkCheckButton* _tmp66_;
+ GtkBox* _tmp67_;
+ GtkCheckButton* _tmp68_;
+ GtkCheckButton* _tmp69_;
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp60_ = app_dirs_get_import_dir ();
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp61_ = _tmp60_;
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp62_ = get_display_pathname (_tmp61_);
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp63_ = _tmp62_;
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp64_ = g_strdup_printf (_ ("_Import photos from your %s folder"), _tmp63_);
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp65_ = _tmp64_;
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp66_ = (GtkCheckButton*) gtk_check_button_new_with_mnemonic (_tmp65_);
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp66_);
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->system_pictures_import_check);
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->system_pictures_import_check = _tmp66_;
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp65_);
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp63_);
+#line 79 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (_tmp61_);
+#line 82 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp67_ = self->priv->import_action_checkbox_packer;
+#line 82 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp68_ = self->priv->system_pictures_import_check;
+#line 82 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp67_, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (_tmp68_, gtk_widget_get_type (), GtkWidget));
+#line 83 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp69_ = self->priv->system_pictures_import_check;
+#line 83 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp69_, gtk_toggle_button_get_type (), GtkToggleButton), TRUE);
+#line 548 "WelcomeDialog.c"
+ }
+#line 86 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp70_ = (GtkLabel*) gtk_label_new (_ ("You can also import photos in any of these ways:"));
+#line 86 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp70_);
+#line 86 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->instruction_header);
+#line 86 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->instruction_header = _tmp70_;
+#line 88 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp71_ = self->priv->instruction_header;
+#line 88 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_xalign (_tmp71_, 0.0f);
+#line 89 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp72_ = self->priv->instruction_header;
+#line 89 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_yalign (_tmp72_, 0.5f);
+#line 90 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp73_ = self->priv->instruction_header;
+#line 90 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_set_margin_top (G_TYPE_CHECK_INSTANCE_CAST (_tmp73_, gtk_widget_get_type (), GtkWidget), 20);
+#line 92 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp74_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 16);
+#line 92 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp74_);
+#line 92 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ content = _tmp74_;
+#line 93 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp75_ = header_content;
+#line 93 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_box_pack_start (content, G_TYPE_CHECK_INSTANCE_CAST (_tmp75_, gtk_widget_get_type (), GtkWidget), TRUE, TRUE, (guint) 0);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp76_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp76_);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->import_content);
+#line 94 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->import_content = _tmp76_;
+#line 95 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp77_ = self->priv->import_content;
+#line 95 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (content, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (_tmp77_, gtk_widget_get_type (), GtkWidget));
+#line 96 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp78_ = instructions;
+#line 96 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_box_pack_start (content, G_TYPE_CHECK_INSTANCE_CAST (_tmp78_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 98 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp79_ = (GtkCheckButton*) gtk_check_button_new_with_mnemonic (_ ("_Don’t show this message again"));
+#line 98 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp79_);
+#line 98 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->hide_button);
+#line 98 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->hide_button = _tmp79_;
+#line 99 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp80_ = self->priv->hide_button;
+#line 99 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp80_, gtk_toggle_button_get_type (), GtkToggleButton), TRUE);
+#line 100 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp81_ = self->priv->hide_button;
+#line 100 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_box_pack_start (content, G_TYPE_CHECK_INSTANCE_CAST (_tmp81_, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 6);
+#line 101 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (content, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_FILL);
+#line 102 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_set_valign (G_TYPE_CHECK_INSTANCE_CAST (content, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_FILL);
+#line 103 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_set_hexpand (G_TYPE_CHECK_INSTANCE_CAST (content, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 104 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_set_vexpand (G_TYPE_CHECK_INSTANCE_CAST (content, gtk_widget_get_type (), GtkWidget), FALSE);
+#line 105 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_set_margin_top (G_TYPE_CHECK_INSTANCE_CAST (content, gtk_widget_get_type (), GtkWidget), 12);
+#line 106 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_set_margin_bottom (G_TYPE_CHECK_INSTANCE_CAST (content, gtk_widget_get_type (), GtkWidget), 0);
+#line 107 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_set_margin_start (G_TYPE_CHECK_INSTANCE_CAST (content, gtk_widget_get_type (), GtkWidget), 12);
+#line 108 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_set_margin_end (G_TYPE_CHECK_INSTANCE_CAST (content, gtk_widget_get_type (), GtkWidget), 12);
+#line 110 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp82_ = (GtkBox*) gtk_dialog_get_content_area (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog));
+#line 110 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_box_pack_start (G_TYPE_CHECK_INSTANCE_CAST (_tmp82_, gtk_box_get_type (), GtkBox), G_TYPE_CHECK_INSTANCE_CAST (content, gtk_widget_get_type (), GtkWidget), FALSE, FALSE, (guint) 0);
+#line 112 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp83_ = ok_button;
+#line 112 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_grab_focus (_tmp83_);
+#line 114 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ welcome_dialog_install_import_content (self);
+#line 116 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp84_ = self->priv->import_meta_host;
+#line 116 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ spit_data_imports_welcome_import_meta_host_start (_tmp84_);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (content);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (arrow_glyph);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (indent_prefix);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (instructions);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (header_content);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (header_text);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (image);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (primary_text);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (ok_button);
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return self;
+#line 662 "WelcomeDialog.c"
+}
+
+
+WelcomeDialog* welcome_dialog_new (GtkWindow* owner) {
+#line 28 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return welcome_dialog_construct (TYPE_WELCOME_DIALOG, owner);
+#line 669 "WelcomeDialog.c"
+}
+
+
+static void welcome_dialog_install_import_content (WelcomeDialog* self) {
+ gboolean _tmp0_ = FALSE;
+ gboolean _tmp1_ = FALSE;
+ GtkCheckButton** _tmp2_;
+ gint _tmp2__length1;
+#line 119 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_return_if_fail (IS_WELCOME_DIALOG (self));
+#line 121 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp2_ = self->priv->external_import_checks;
+#line 121 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp2__length1 = self->priv->external_import_checks_length1;
+#line 121 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (_tmp2__length1 > 0) {
+#line 121 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp1_ = TRUE;
+#line 688 "WelcomeDialog.c"
+ } else {
+ GtkCheckButton* _tmp3_;
+#line 121 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp3_ = self->priv->system_pictures_import_check;
+#line 121 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp1_ = _tmp3_ != NULL;
+#line 695 "WelcomeDialog.c"
+ }
+#line 121 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (_tmp1_) {
+#line 699 "WelcomeDialog.c"
+ gboolean _tmp4_;
+#line 122 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp4_ = self->priv->import_content_already_installed;
+#line 122 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp0_ = _tmp4_ == FALSE;
+#line 705 "WelcomeDialog.c"
+ } else {
+#line 121 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp0_ = FALSE;
+#line 709 "WelcomeDialog.c"
+ }
+#line 120 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (_tmp0_) {
+#line 713 "WelcomeDialog.c"
+ GtkLabel* _tmp5_;
+ GtkBox* _tmp6_;
+ GtkBox* _tmp7_;
+ GtkBox* _tmp8_;
+ GtkLabel* _tmp9_;
+#line 124 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp5_ = self->priv->secondary_text;
+#line 124 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_label_set_markup (_tmp5_, "");
+#line 125 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp6_ = self->priv->import_content;
+#line 125 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp7_ = self->priv->import_action_checkbox_packer;
+#line 125 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, gtk_widget_get_type (), GtkWidget));
+#line 126 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp8_ = self->priv->import_content;
+#line 126 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp9_ = self->priv->instruction_header;
+#line 126 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_widget_get_type (), GtkWidget));
+#line 127 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->import_content_already_installed = TRUE;
+#line 737 "WelcomeDialog.c"
+ }
+}
+
+
+static void _vala_array_add4 (WelcomeServiceEntry** * array, int* length, int* size, WelcomeServiceEntry* value) {
+#line 133 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if ((*length) == (*size)) {
+#line 133 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ *size = (*size) ? (2 * (*size)) : 4;
+#line 133 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ *array = g_renew (WelcomeServiceEntry*, *array, (*size) + 1);
+#line 749 "WelcomeDialog.c"
+ }
+#line 133 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ (*array)[(*length)++] = value;
+#line 133 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ (*array)[*length] = NULL;
+#line 755 "WelcomeDialog.c"
+}
+
+
+static void _vala_array_add5 (GtkCheckButton** * array, int* length, int* size, GtkCheckButton* value) {
+#line 136 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if ((*length) == (*size)) {
+#line 136 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ *size = (*size) ? (2 * (*size)) : 4;
+#line 136 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ *array = g_renew (GtkCheckButton*, *array, (*size) + 1);
+#line 766 "WelcomeDialog.c"
+ }
+#line 136 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ (*array)[(*length)++] = value;
+#line 136 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ (*array)[*length] = NULL;
+#line 772 "WelcomeDialog.c"
+}
+
+
+void welcome_dialog_install_service_entry (WelcomeDialog* self, WelcomeServiceEntry* entry) {
+ WelcomeServiceEntry* _tmp0_;
+ gchar* _tmp1_;
+ gchar* _tmp2_;
+ gchar* _tmp3_;
+ gchar* _tmp4_;
+ WelcomeServiceEntry** _tmp5_;
+ gint _tmp5__length1;
+ WelcomeServiceEntry* _tmp6_;
+ WelcomeServiceEntry* _tmp7_;
+ GtkCheckButton* entry_check = NULL;
+ WelcomeServiceEntry* _tmp8_;
+ gchar* _tmp9_;
+ gchar* _tmp10_;
+ gchar* _tmp11_;
+ gchar* _tmp12_;
+ GtkCheckButton* _tmp13_;
+ GtkCheckButton* _tmp14_;
+ GtkCheckButton** _tmp15_;
+ gint _tmp15__length1;
+ GtkCheckButton* _tmp16_;
+ GtkBox* _tmp17_;
+#line 131 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_return_if_fail (IS_WELCOME_DIALOG (self));
+#line 131 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_return_if_fail (IS_WELCOME_SERVICE_ENTRY (entry));
+#line 132 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp0_ = entry;
+#line 132 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp1_ = welcome_service_entry_get_service_name (_tmp0_);
+#line 132 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp2_ = _tmp1_;
+#line 132 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp3_ = g_strdup_printf ("WelcomeDialog: Installing service entry for %s", _tmp2_);
+#line 132 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp4_ = _tmp3_;
+#line 132 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_debug ("WelcomeDialog.vala:132: %s", _tmp4_);
+#line 132 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp4_);
+#line 132 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp2_);
+#line 133 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp5_ = self->priv->external_import_entries;
+#line 133 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp5__length1 = self->priv->external_import_entries_length1;
+#line 133 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp6_ = entry;
+#line 133 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp7_ = _g_object_ref0 (_tmp6_);
+#line 133 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _vala_array_add4 (&self->priv->external_import_entries, &self->priv->external_import_entries_length1, &self->priv->_external_import_entries_size_, _tmp7_);
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp8_ = entry;
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp9_ = welcome_service_entry_get_service_name (_tmp8_);
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp10_ = _tmp9_;
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp11_ = g_strdup_printf (_ ("Import photos from your %s library"), _tmp10_);
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp12_ = _tmp11_;
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp13_ = (GtkCheckButton*) gtk_check_button_new_with_label (_tmp12_);
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_object_ref_sink (_tmp13_);
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp14_ = _tmp13_;
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp12_);
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_free0 (_tmp10_);
+#line 134 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ entry_check = _tmp14_;
+#line 136 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp15_ = self->priv->external_import_checks;
+#line 136 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp15__length1 = self->priv->external_import_checks_length1;
+#line 136 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp16_ = _g_object_ref0 (entry_check);
+#line 136 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _vala_array_add5 (&self->priv->external_import_checks, &self->priv->external_import_checks_length1, &self->priv->_external_import_checks_size_, _tmp16_);
+#line 137 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_toggle_button_set_active (G_TYPE_CHECK_INSTANCE_CAST (entry_check, gtk_toggle_button_get_type (), GtkToggleButton), TRUE);
+#line 138 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp17_ = self->priv->external_import_action_checkbox_packer;
+#line 138 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (entry_check, gtk_widget_get_type (), GtkWidget));
+#line 139 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ welcome_dialog_install_import_content (self);
+#line 131 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (entry_check);
+#line 868 "WelcomeDialog.c"
+}
+
+
+/**
+ * Connected to the 'response' signal. This is part of a workaround
+ * for the fact that run()-ning this dialog can interfere with displaying
+ * images from a camera; please see #4997 for details.
+ */
+static void welcome_dialog_on_dismiss (WelcomeDialog* self, gint resp) {
+ gint _tmp0_;
+#line 147 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_return_if_fail (IS_WELCOME_DIALOG (self));
+#line 148 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp0_ = resp;
+#line 148 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (_tmp0_ == ((gint) GTK_RESPONSE_CLOSE)) {
+#line 149 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->ok_clicked = TRUE;
+#line 887 "WelcomeDialog.c"
+ }
+#line 151 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_hide (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 152 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_main_quit ();
+#line 893 "WelcomeDialog.c"
+}
+
+
+static void _welcome_dialog_on_dismiss_gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) {
+#line 158 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ welcome_dialog_on_dismiss ((WelcomeDialog*) self, response_id);
+#line 900 "WelcomeDialog.c"
+}
+
+
+static void _vala_array_add6 (WelcomeServiceEntry** * array, int* length, int* size, WelcomeServiceEntry* value) {
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if ((*length) == (*size)) {
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ *size = (*size) ? (2 * (*size)) : 4;
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ *array = g_renew (WelcomeServiceEntry*, *array, (*size) + 1);
+#line 911 "WelcomeDialog.c"
+ }
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ (*array)[(*length)++] = value;
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ (*array)[*length] = NULL;
+#line 917 "WelcomeDialog.c"
+}
+
+
+static WelcomeServiceEntry** _vala_array_dup1 (WelcomeServiceEntry** self, int length) {
+ WelcomeServiceEntry** result;
+ int i;
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ result = g_new0 (WelcomeServiceEntry*, length + 1);
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ for (i = 0; i < length; i++) {
+#line 928 "WelcomeDialog.c"
+ WelcomeServiceEntry* _tmp0_;
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp0_ = _g_object_ref0 (self[i]);
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ result[i] = _tmp0_;
+#line 934 "WelcomeDialog.c"
+ }
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return result;
+#line 938 "WelcomeDialog.c"
+}
+
+
+gboolean welcome_dialog_execute (WelcomeDialog* self, WelcomeServiceEntry*** selected_import_entries, int* selected_import_entries_length1, gboolean* do_system_pictures_import) {
+ WelcomeServiceEntry** _vala_selected_import_entries = NULL;
+ int _vala_selected_import_entries_length1 = 0;
+ gboolean _vala_do_system_pictures_import = FALSE;
+ gboolean result = FALSE;
+ guint _tmp0_;
+ gboolean ok = FALSE;
+ gboolean _tmp1_;
+ gboolean show_dialog = FALSE;
+ gboolean _tmp2_;
+ WelcomeServiceEntry** _result_ = NULL;
+ WelcomeServiceEntry** _tmp5_;
+ gint _result__length1;
+ gint __result__size_;
+ WelcomeServiceEntry** _tmp19_;
+ gint _tmp19__length1;
+ WelcomeServiceEntry** _tmp20_;
+ gint _tmp20__length1;
+ gboolean _tmp21_ = FALSE;
+ GtkCheckButton* _tmp22_;
+#line 155 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_return_val_if_fail (IS_WELCOME_DIALOG (self), FALSE);
+#line 158 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), "response", (GCallback) _welcome_dialog_on_dismiss_gtk_dialog_response, self, 0);
+#line 159 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_show_all (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 160 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_show (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 165 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_main ();
+#line 169 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_signal_parse_name ("response", gtk_dialog_get_type (), &_tmp0_, NULL, FALSE);
+#line 169 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_signal_handlers_disconnect_matched (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog), G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp0_, 0, NULL, (GCallback) _welcome_dialog_on_dismiss_gtk_dialog_response, self);
+#line 171 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp1_ = self->priv->ok_clicked;
+#line 171 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ ok = _tmp1_;
+#line 172 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ show_dialog = TRUE;
+#line 174 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp2_ = ok;
+#line 174 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (_tmp2_) {
+#line 986 "WelcomeDialog.c"
+ GtkCheckButton* _tmp3_;
+ gboolean _tmp4_;
+#line 175 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp3_ = self->priv->hide_button;
+#line 175 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp4_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 175 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ show_dialog = !_tmp4_;
+#line 995 "WelcomeDialog.c"
+ }
+#line 178 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp5_ = g_new0 (WelcomeServiceEntry*, 0 + 1);
+#line 178 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _result_ = _tmp5_;
+#line 178 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _result__length1 = 0;
+#line 178 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ __result__size_ = _result__length1;
+#line 1005 "WelcomeDialog.c"
+ {
+ gint i = 0;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ i = 0;
+#line 1010 "WelcomeDialog.c"
+ {
+ gboolean _tmp6_ = FALSE;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp6_ = TRUE;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ while (TRUE) {
+#line 1017 "WelcomeDialog.c"
+ gint _tmp8_;
+ WelcomeServiceEntry** _tmp9_;
+ gint _tmp9__length1;
+ GtkCheckButton** _tmp10_;
+ gint _tmp10__length1;
+ gint _tmp11_;
+ GtkCheckButton* _tmp12_;
+ gboolean _tmp13_;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (!_tmp6_) {
+#line 1028 "WelcomeDialog.c"
+ gint _tmp7_;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp7_ = i;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ i = _tmp7_ + 1;
+#line 1034 "WelcomeDialog.c"
+ }
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp6_ = FALSE;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp8_ = i;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp9_ = self->priv->external_import_entries;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp9__length1 = self->priv->external_import_entries_length1;
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (!(_tmp8_ < _tmp9__length1)) {
+#line 179 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ break;
+#line 1048 "WelcomeDialog.c"
+ }
+#line 180 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp10_ = self->priv->external_import_checks;
+#line 180 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp10__length1 = self->priv->external_import_checks_length1;
+#line 180 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp11_ = i;
+#line 180 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp12_ = _tmp10_[_tmp11_];
+#line 180 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp13_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 180 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (_tmp13_ == TRUE) {
+#line 1062 "WelcomeDialog.c"
+ WelcomeServiceEntry** _tmp14_;
+ gint _tmp14__length1;
+ WelcomeServiceEntry** _tmp15_;
+ gint _tmp15__length1;
+ gint _tmp16_;
+ WelcomeServiceEntry* _tmp17_;
+ WelcomeServiceEntry* _tmp18_;
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp14_ = _result_;
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp14__length1 = _result__length1;
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp15_ = self->priv->external_import_entries;
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp15__length1 = self->priv->external_import_entries_length1;
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp16_ = i;
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp17_ = _tmp15_[_tmp16_];
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp18_ = _g_object_ref0 (_tmp17_);
+#line 181 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _vala_array_add6 (&_result_, &_result__length1, &__result__size_, _tmp18_);
+#line 1086 "WelcomeDialog.c"
+ }
+ }
+ }
+ }
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp19_ = _result_;
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp19__length1 = _result__length1;
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp20_ = (_tmp19_ != NULL) ? _vala_array_dup1 (_tmp19_, _tmp19__length1) : ((gpointer) _tmp19_);
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp20__length1 = _tmp19__length1;
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _vala_selected_import_entries = (_vala_array_free (_vala_selected_import_entries, _vala_selected_import_entries_length1, (GDestroyNotify) g_object_unref), NULL);
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _vala_selected_import_entries = _tmp20_;
+#line 183 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _vala_selected_import_entries_length1 = _tmp20__length1;
+#line 185 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp22_ = self->priv->system_pictures_import_check;
+#line 185 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (_tmp22_ != NULL) {
+#line 1109 "WelcomeDialog.c"
+ GtkCheckButton* _tmp23_;
+ gboolean _tmp24_;
+#line 185 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp23_ = self->priv->system_pictures_import_check;
+#line 185 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp24_ = gtk_toggle_button_get_active (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, gtk_toggle_button_get_type (), GtkToggleButton));
+#line 185 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp21_ = _tmp24_;
+#line 1118 "WelcomeDialog.c"
+ } else {
+#line 185 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp21_ = FALSE;
+#line 1122 "WelcomeDialog.c"
+ }
+#line 184 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _vala_do_system_pictures_import = _tmp21_;
+#line 187 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ gtk_widget_destroy (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
+#line 189 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ result = show_dialog;
+#line 189 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _result_ = (_vala_array_free (_result_, _result__length1, (GDestroyNotify) g_object_unref), NULL);
+#line 189 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (selected_import_entries) {
+#line 189 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ *selected_import_entries = _vala_selected_import_entries;
+#line 1136 "WelcomeDialog.c"
+ } else {
+#line 189 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _vala_selected_import_entries = (_vala_array_free (_vala_selected_import_entries, _vala_selected_import_entries_length1, (GDestroyNotify) g_object_unref), NULL);
+#line 1140 "WelcomeDialog.c"
+ }
+#line 189 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (selected_import_entries_length1) {
+#line 189 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ *selected_import_entries_length1 = _vala_selected_import_entries_length1;
+#line 1146 "WelcomeDialog.c"
+ }
+#line 189 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (do_system_pictures_import) {
+#line 189 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ *do_system_pictures_import = _vala_do_system_pictures_import;
+#line 1152 "WelcomeDialog.c"
+ }
+#line 189 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return result;
+#line 1156 "WelcomeDialog.c"
+}
+
+
+static gboolean welcome_dialog_is_system_pictures_import_possible (void) {
+ gboolean result = FALSE;
+ GFile* system_pictures = NULL;
+ GFile* _tmp0_;
+ GFile* _tmp1_;
+ gboolean _tmp2_;
+ GFile* _tmp3_;
+ GFileType _tmp4_;
+ gboolean _tmp10_ = FALSE;
+ GError * _inner_error_ = NULL;
+#line 193 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp0_ = app_dirs_get_import_dir ();
+#line 193 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ system_pictures = _tmp0_;
+#line 194 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp1_ = system_pictures;
+#line 194 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp2_ = g_file_query_exists (_tmp1_, NULL);
+#line 194 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (!_tmp2_) {
+#line 195 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ result = FALSE;
+#line 195 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (system_pictures);
+#line 195 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return result;
+#line 1186 "WelcomeDialog.c"
+ }
+#line 197 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp3_ = system_pictures;
+#line 197 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp4_ = g_file_query_file_type (_tmp3_, G_FILE_QUERY_INFO_NONE, NULL);
+#line 197 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (!(_tmp4_ == G_FILE_TYPE_DIRECTORY)) {
+#line 198 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ result = FALSE;
+#line 198 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (system_pictures);
+#line 198 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return result;
+#line 1200 "WelcomeDialog.c"
+ }
+ {
+ GFileEnumerator* syspics_child_enum = NULL;
+ GFile* _tmp5_;
+ GFileEnumerator* _tmp6_;
+ GFileInfo* _tmp7_ = NULL;
+ GFileEnumerator* _tmp8_;
+ GFileInfo* _tmp9_;
+#line 201 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp5_ = system_pictures;
+#line 201 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp6_ = g_file_enumerate_children (_tmp5_, "standard::*", G_FILE_QUERY_INFO_NONE, NULL, &_inner_error_);
+#line 201 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ syspics_child_enum = _tmp6_;
+#line 201 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 1217 "WelcomeDialog.c"
+ goto __catch24_g_error;
+ }
+#line 203 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp8_ = syspics_child_enum;
+#line 203 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp9_ = g_file_enumerator_next_file (_tmp8_, NULL, &_inner_error_);
+#line 203 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp7_ = _tmp9_;
+#line 203 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ if (G_UNLIKELY (_inner_error_ != NULL)) {
+#line 203 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (syspics_child_enum);
+#line 1230 "WelcomeDialog.c"
+ goto __catch24_g_error;
+ }
+#line 203 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ result = _tmp7_ != NULL;
+#line 203 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (_tmp7_);
+#line 203 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (syspics_child_enum);
+#line 203 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (system_pictures);
+#line 203 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return result;
+#line 1243 "WelcomeDialog.c"
+ }
+ goto __finally24;
+ __catch24_g_error:
+ {
+ GError* e = NULL;
+#line 200 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ e = _inner_error_;
+#line 200 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _inner_error_ = NULL;
+#line 205 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ result = FALSE;
+#line 205 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_error_free0 (e);
+#line 205 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (system_pictures);
+#line 205 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return result;
+#line 1261 "WelcomeDialog.c"
+ }
+ __finally24:
+#line 200 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (system_pictures);
+#line 200 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.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 200 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_clear_error (&_inner_error_);
+#line 200 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ return _tmp10_;
+#line 1272 "WelcomeDialog.c"
+}
+
+
+static void welcome_dialog_class_init (WelcomeDialogClass * klass) {
+#line 14 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ welcome_dialog_parent_class = g_type_class_peek_parent (klass);
+#line 14 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ g_type_class_add_private (klass, sizeof (WelcomeDialogPrivate));
+#line 14 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ G_OBJECT_CLASS (klass)->finalize = welcome_dialog_finalize;
+#line 1283 "WelcomeDialog.c"
+}
+
+
+static void welcome_dialog_instance_init (WelcomeDialog * self) {
+ GtkCheckButton** _tmp0_;
+ WelcomeServiceEntry** _tmp1_;
+#line 14 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv = WELCOME_DIALOG_GET_PRIVATE (self);
+#line 16 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->system_pictures_import_check = NULL;
+#line 17 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp0_ = g_new0 (GtkCheckButton*, 0 + 1);
+#line 17 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->external_import_checks = _tmp0_;
+#line 17 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->external_import_checks_length1 = 0;
+#line 17 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->_external_import_checks_size_ = self->priv->external_import_checks_length1;
+#line 18 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _tmp1_ = g_new0 (WelcomeServiceEntry*, 0 + 1);
+#line 18 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->external_import_entries = _tmp1_;
+#line 18 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->external_import_entries_length1 = 0;
+#line 18 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->_external_import_entries_size_ = self->priv->external_import_entries_length1;
+#line 25 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->import_content_already_installed = FALSE;
+#line 26 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->ok_clicked = FALSE;
+#line 1314 "WelcomeDialog.c"
+}
+
+
+static void welcome_dialog_finalize (GObject * obj) {
+ WelcomeDialog * self;
+#line 14 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_WELCOME_DIALOG, WelcomeDialog);
+#line 15 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->hide_button);
+#line 16 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->system_pictures_import_check);
+#line 17 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->external_import_checks = (_vala_array_free (self->priv->external_import_checks, self->priv->external_import_checks_length1, (GDestroyNotify) g_object_unref), NULL);
+#line 18 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ self->priv->external_import_entries = (_vala_array_free (self->priv->external_import_entries, self->priv->external_import_entries_length1, (GDestroyNotify) g_object_unref), NULL);
+#line 19 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->secondary_text);
+#line 20 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->instruction_header);
+#line 21 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->import_content);
+#line 22 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->import_action_checkbox_packer);
+#line 23 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->external_import_action_checkbox_packer);
+#line 24 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ _g_object_unref0 (self->priv->import_meta_host);
+#line 14 "/home/jens/Source/shotwell/src/dialogs/WelcomeDialog.vala"
+ G_OBJECT_CLASS (welcome_dialog_parent_class)->finalize (obj);
+#line 1344 "WelcomeDialog.c"
+}
+
+
+GType welcome_dialog_get_type (void) {
+ static volatile gsize welcome_dialog_type_id__volatile = 0;
+ if (g_once_init_enter (&welcome_dialog_type_id__volatile)) {
+ static const GTypeInfo g_define_type_info = { sizeof (WelcomeDialogClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) welcome_dialog_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WelcomeDialog), 0, (GInstanceInitFunc) welcome_dialog_instance_init, NULL };
+ GType welcome_dialog_type_id;
+ welcome_dialog_type_id = g_type_register_static (gtk_dialog_get_type (), "WelcomeDialog", &g_define_type_info, 0);
+ g_once_init_leave (&welcome_dialog_type_id__volatile, welcome_dialog_type_id);
+ }
+ return welcome_dialog_type_id__volatile;
+}
+
+
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+ if ((array != NULL) && (destroy_func != NULL)) {
+ int i;
+ for (i = 0; i < array_length; i = i + 1) {
+ if (((gpointer*) array)[i] != NULL) {
+ destroy_func (((gpointer*) array)[i]);
+ }
+ }
+ }
+}
+
+
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+ _vala_array_destroy (array, array_length, destroy_func);
+ g_free (array);
+}
+
+
+
diff --git a/src/dialogs/WelcomeDialog.vala b/src/dialogs/WelcomeDialog.vala
new file mode 100644
index 0000000..e40686d
--- /dev/null
+++ b/src/dialogs/WelcomeDialog.vala
@@ -0,0 +1,208 @@
+/* Copyright 2016 Software Freedom Conservancy Inc.
+ * Copyright 2017 Jens Georg <mail@jensge.org>
+ *
+ * This software is licensed under the GNU LGPL (version 2.1 or later).
+ * See the COPYING file in this distribution.
+ */
+
+public interface WelcomeServiceEntry : GLib.Object {
+ public abstract string get_service_name();
+
+ public abstract void execute();
+}
+
+public class WelcomeDialog : Gtk.Dialog {
+ Gtk.CheckButton hide_button;
+ Gtk.CheckButton? system_pictures_import_check = null;
+ Gtk.CheckButton[] external_import_checks = new Gtk.CheckButton[0];
+ WelcomeServiceEntry[] external_import_entries = new WelcomeServiceEntry[0];
+ Gtk.Label secondary_text;
+ Gtk.Label instruction_header;
+ Gtk.Box import_content;
+ Gtk.Box import_action_checkbox_packer;
+ Gtk.Box external_import_action_checkbox_packer;
+ Spit.DataImports.WelcomeImportMetaHost import_meta_host;
+ bool import_content_already_installed = false;
+ bool ok_clicked = false;
+
+ public WelcomeDialog(Gtk.Window owner) {
+ Object(use_header_bar : Resources.use_header_bar());
+ import_meta_host = new Spit.DataImports.WelcomeImportMetaHost(this);
+ bool show_system_pictures_import = is_system_pictures_import_possible();
+ Gtk.Widget ok_button = add_button(Resources.OK_LABEL, Gtk.ResponseType.CLOSE);
+ set_default_response(Gtk.ResponseType.CLOSE);
+
+ set_title(_("Welcome!"));
+ set_resizable(false);
+ set_type_hint(Gdk.WindowTypeHint.DIALOG);
+ set_transient_for(owner);
+
+ Gtk.Label primary_text = new Gtk.Label("");
+ primary_text.set_markup(
+ "<span size=\"large\" weight=\"bold\">%s</span>".printf(_("Welcome to Shotwell!")));
+ primary_text.xalign = 0.0f;
+ primary_text.yalign = 0.5f;
+ secondary_text = new Gtk.Label("");
+ secondary_text.set_markup("<span weight=\"normal\">%s</span>".printf(
+ _("To get started, import photos in any of these ways:")));
+ secondary_text.xalign = 0.0f;
+ secondary_text.yalign = 0.5f;
+ var image = new Gtk.Image.from_icon_name ("shotwell", Gtk.IconSize.DIALOG);
+
+ Gtk.Box header_text = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
+ header_text.pack_start(primary_text, false, false, 5);
+ header_text.pack_start(secondary_text, false, false, 0);
+
+ Gtk.Box header_content = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 12);
+ header_content.pack_start(image, false, false, 0);
+ header_content.pack_start(header_text, false, false, 0);
+
+ Gtk.Label instructions = new Gtk.Label("");
+ string indent_prefix = " "; // we can't tell what the indent prefix is going to be so assume we need one
+
+ string arrow_glyph = (get_direction() == Gtk.TextDirection.RTL) ? "◂" : "▸";
+
+ instructions.set_markup(((indent_prefix + "&#8226; %s\n") + (indent_prefix + "&#8226; %s\n")
+ + (indent_prefix + "&#8226; %s")).printf(
+ _("Choose <span weight=\"bold\">File %s Import From Folder</span>").printf(arrow_glyph),
+ _("Drag and drop photos onto the Shotwell window"),
+ _("Connect a camera to your computer and import")));
+ instructions.xalign = 0.0f;
+ instructions.yalign = 0.5f;
+
+ import_action_checkbox_packer = new Gtk.Box(Gtk.Orientation.VERTICAL, 2);
+
+ external_import_action_checkbox_packer = new Gtk.Box(Gtk.Orientation.VERTICAL, 2);
+ import_action_checkbox_packer.add(external_import_action_checkbox_packer);
+
+ if (show_system_pictures_import) {
+ system_pictures_import_check = new Gtk.CheckButton.with_mnemonic(
+ _("_Import photos from your %s folder").printf(
+ get_display_pathname(AppDirs.get_import_dir())));
+ import_action_checkbox_packer.add(system_pictures_import_check);
+ system_pictures_import_check.set_active(true);
+ }
+
+ instruction_header = new Gtk.Label(
+ _("You can also import photos in any of these ways:"));
+ instruction_header.xalign = 0.0f;
+ instruction_header.yalign = 0.5f;
+ instruction_header.set_margin_top(20);
+
+ Gtk.Box content = new Gtk.Box(Gtk.Orientation.VERTICAL, 16);
+ content.pack_start(header_content, true, true, 0);
+ import_content = new Gtk.Box(Gtk.Orientation.VERTICAL, 2);
+ content.add(import_content);
+ content.pack_start(instructions, false, false, 0);
+
+ hide_button = new Gtk.CheckButton.with_mnemonic(_("_Don’t show this message again"));
+ hide_button.set_active(true);
+ content.pack_start(hide_button, false, false, 6);
+ content.halign = Gtk.Align.FILL;
+ content.valign = Gtk.Align.FILL;
+ content.hexpand = false;
+ content.vexpand = false;
+ content.margin_top = 12;
+ content.margin_bottom = 0;
+ content.margin_start = 12;
+ content.margin_end = 12;
+
+ ((Gtk.Box) get_content_area()).pack_start(content, false, false, 0);
+
+ ok_button.grab_focus();
+
+ install_import_content();
+
+ import_meta_host.start();
+ }
+
+ private void install_import_content() {
+ if (
+ (external_import_checks.length > 0 || system_pictures_import_check != null) &&
+ (import_content_already_installed == false)
+ ) {
+ secondary_text.set_markup("");
+ import_content.add(import_action_checkbox_packer);
+ import_content.add(instruction_header);
+ import_content_already_installed = true;
+ }
+ }
+
+ public void install_service_entry(WelcomeServiceEntry entry) {
+ debug("WelcomeDialog: Installing service entry for %s".printf(entry.get_service_name()));
+ external_import_entries += entry;
+ Gtk.CheckButton entry_check = new Gtk.CheckButton.with_label(
+ _("Import photos from your %s library").printf(entry.get_service_name()));
+ external_import_checks += entry_check;
+ entry_check.set_active(true);
+ external_import_action_checkbox_packer.add(entry_check);
+ install_import_content();
+ }
+
+ /**
+ * Connected to the 'response' signal. This is part of a workaround
+ * for the fact that run()-ning this dialog can interfere with displaying
+ * images from a camera; please see #4997 for details.
+ */
+ private void on_dismiss(int resp) {
+ if (resp == Gtk.ResponseType.CLOSE) {
+ ok_clicked = true;
+ }
+ hide();
+ Gtk.main_quit();
+ }
+
+ public bool execute(out WelcomeServiceEntry[] selected_import_entries, out bool do_system_pictures_import) {
+ // it's unsafe to call run() here - it interferes with displaying
+ // images from a camera - so we process the dialog ourselves.
+ response.connect(on_dismiss);
+ show_all();
+ show();
+
+ // this will block the thread we're in until a matching call
+ // to main_quit() is encountered; this happens when either the window
+ // is closed or OK is clicked.
+ Gtk.main();
+
+ // at this point, the inner main loop will have been exited.
+ // we've got the response, so we don't need this signal anymore.
+ response.disconnect(on_dismiss);
+
+ bool ok = ok_clicked;
+ bool show_dialog = true;
+
+ if (ok)
+ show_dialog = !hide_button.get_active();
+
+ // Use a temporary variable as += cannot be used on parameters
+ WelcomeServiceEntry[] result = new WelcomeServiceEntry[0];
+ for (int i = 0; i < external_import_entries.length; i++) {
+ if (external_import_checks[i].get_active() == true)
+ result += external_import_entries[i];
+ }
+ selected_import_entries = result;
+ do_system_pictures_import =
+ (system_pictures_import_check != null) ? system_pictures_import_check.get_active() : false;
+
+ destroy();
+
+ return show_dialog;
+ }
+
+ private static bool is_system_pictures_import_possible() {
+ File system_pictures = AppDirs.get_import_dir();
+ if (!system_pictures.query_exists(null))
+ return false;
+
+ if (!(system_pictures.query_file_type(FileQueryInfoFlags.NONE, null) == FileType.DIRECTORY))
+ return false;
+
+ try {
+ FileEnumerator syspics_child_enum = system_pictures.enumerate_children("standard::*",
+ FileQueryInfoFlags.NONE, null);
+ return (syspics_child_enum.next_file(null) != null);
+ } catch (Error e) {
+ return false;
+ }
+ }
+}