/* MultiTextEntryDialog.c generated by valac 0.40.4, 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;
enum  {
	MULTI_TEXT_ENTRY_DIALOG_0_PROPERTY,
	MULTI_TEXT_ENTRY_DIALOG_NUM_PROPERTIES
};
static GParamSpec* multi_text_entry_dialog_properties[MULTI_TEXT_ENTRY_DIALOG_NUM_PROPERTIES];
#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))
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;
#line 17 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	self = (MultiTextEntryDialog*) g_object_new (object_type, "use-header-bar", resources_use_header_bar (), NULL);
#line 16 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	return self;
#line 103 "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 112 "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)
{
	AppWindow* _tmp0_;
	AppWindow* _tmp1_;
	GdkWindow* _tmp2_;
	AppWindow* _tmp3_;
	AppWindow* _tmp4_;
	const gchar* _tmp5_ = NULL;
	GtkTextView* _tmp6_;
	GtkTextBuffer* _tmp7_;
	GtkTextBuffer* _tmp8_;
	GtkTextView* _tmp9_;
#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"
	gtk_window_set_title (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow), title);
#line 22 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_tmp0_ = app_window_get_instance ();
#line 22 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_tmp1_ = _tmp0_;
#line 22 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_tmp2_ = gtk_widget_get_parent_window (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, 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), _tmp2_);
#line 22 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_g_object_unref0 (_tmp1_);
#line 23 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_tmp3_ = app_window_get_instance ();
#line 23 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_tmp4_ = _tmp3_;
#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 (_tmp4_, gtk_window_get_type (), GtkWindow));
#line 23 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_g_object_unref0 (_tmp4_);
#line 24 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	self->priv->on_modify_validate = modify_validate;
#line 24 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	self->priv->on_modify_validate_target = modify_validate_target;
#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	if (initial_text != NULL) {
#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
		_tmp5_ = initial_text;
#line 168 "MultiTextEntryDialog.c"
	} else {
#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
		_tmp5_ = "";
#line 172 "MultiTextEntryDialog.c"
	}
#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_tmp6_ = self->priv->entry;
#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_tmp7_ = gtk_text_view_get_buffer (_tmp6_);
#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_tmp8_ = _tmp7_;
#line 26 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	g_object_set (_tmp8_, "text", _tmp5_, NULL);
#line 28 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	_tmp9_ = self->priv->entry;
#line 28 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
	gtk_widget_grab_focus (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, gtk_widget_get_type (), GtkWidget));
#line 186 "MultiTextEntryDialog.c"
}


gchar*
multi_text_entry_dialog_execute (MultiTextEntryDialog* self)
{
	gchar* result = NULL;
	gchar* text = NULL;
#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"
	if (gtk_dialog_run (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_dialog_get_type (), GtkDialog)) == ((gint) GTK_RESPONSE_OK)) {
#line 203 "MultiTextEntryDialog.c"
		GtkTextView* _tmp0_;
		GtkTextBuffer* _tmp1_;
		GtkTextBuffer* _tmp2_;
		gchar* _tmp3_;
		gchar* _tmp4_;
#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
		_tmp0_ = self->priv->entry;
#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
		_tmp1_ = gtk_text_view_get_buffer (_tmp0_);
#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
		_tmp2_ = _tmp1_;
#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
		g_object_get (_tmp2_, "text", &_tmp3_, NULL);
#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
		_tmp4_ = _tmp3_;
#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
		_g_free0 (text);
#line 37 "/home/jens/Source/shotwell/src/dialogs/MultiTextEntryDialog.vala"
		text = _tmp4_;
#line 223 "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 231 "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 251 "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 262 "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 276 "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;
}