/* components-inspector-system-view.c generated by valac 0.56.3, the Vala compiler
 * generated from components-inspector-system-view.vala, do not modify */

/*
 * Copyright 2019 Michael Gratton <mike@vee.net>
 *
 * This software is licensed under the GNU Lesser General Public License
 * (version 2.1 or later). See the COPYING file in this distribution.
 */

#include "geary-client-43.0.h"
#include <gtk/gtk.h>
#include <gee.h>
#include <glib-object.h>
#include <glib.h>
#include <stdlib.h>
#include <string.h>
#include <gio/gio.h>

enum  {
	COMPONENTS_INSPECTOR_SYSTEM_VIEW_0_PROPERTY,
	COMPONENTS_INSPECTOR_SYSTEM_VIEW_NUM_PROPERTIES
};
static GParamSpec* components_inspector_system_view_properties[COMPONENTS_INSPECTOR_SYSTEM_VIEW_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define COMPONENTS_INSPECTOR_SYSTEM_VIEW_TYPE_DETAIL_ROW (components_inspector_system_view_detail_row_get_type ())
#define COMPONENTS_INSPECTOR_SYSTEM_VIEW_DETAIL_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), COMPONENTS_INSPECTOR_SYSTEM_VIEW_TYPE_DETAIL_ROW, ComponentsInspectorSystemViewDetailRow))
#define COMPONENTS_INSPECTOR_SYSTEM_VIEW_DETAIL_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), COMPONENTS_INSPECTOR_SYSTEM_VIEW_TYPE_DETAIL_ROW, ComponentsInspectorSystemViewDetailRowClass))
#define COMPONENTS_INSPECTOR_SYSTEM_VIEW_IS_DETAIL_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), COMPONENTS_INSPECTOR_SYSTEM_VIEW_TYPE_DETAIL_ROW))
#define COMPONENTS_INSPECTOR_SYSTEM_VIEW_IS_DETAIL_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), COMPONENTS_INSPECTOR_SYSTEM_VIEW_TYPE_DETAIL_ROW))
#define COMPONENTS_INSPECTOR_SYSTEM_VIEW_DETAIL_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), COMPONENTS_INSPECTOR_SYSTEM_VIEW_TYPE_DETAIL_ROW, ComponentsInspectorSystemViewDetailRowClass))

typedef struct _ComponentsInspectorSystemViewDetailRow ComponentsInspectorSystemViewDetailRow;
typedef struct _ComponentsInspectorSystemViewDetailRowClass ComponentsInspectorSystemViewDetailRowClass;
#define _g_free0(var) (var = (g_free (var), NULL))
#define _application_client_runtime_detail_free0(var) ((var == NULL) ? NULL : (var = (application_client_runtime_detail_free (var), NULL)))
typedef struct _ComponentsInspectorSystemViewDetailRowPrivate ComponentsInspectorSystemViewDetailRowPrivate;
enum  {
	COMPONENTS_INSPECTOR_SYSTEM_VIEW_DETAIL_ROW_0_PROPERTY,
	COMPONENTS_INSPECTOR_SYSTEM_VIEW_DETAIL_ROW_NUM_PROPERTIES
};
static GParamSpec* components_inspector_system_view_detail_row_properties[COMPONENTS_INSPECTOR_SYSTEM_VIEW_DETAIL_ROW_NUM_PROPERTIES];

struct _ComponentsInspectorSystemViewPrivate {
	GtkListBox* system_list;
	GeeCollection* details;
};

struct _ComponentsInspectorSystemViewDetailRow {
	GtkListBoxRow parent_instance;
	ComponentsInspectorSystemViewDetailRowPrivate * priv;
};

struct _ComponentsInspectorSystemViewDetailRowClass {
	GtkListBoxRowClass parent_class;
};

struct _ComponentsInspectorSystemViewDetailRowPrivate {
	GtkGrid* _layout;
	GtkLabel* _label;
	GtkLabel* _value;
};

static gint ComponentsInspectorSystemView_private_offset;
static gpointer components_inspector_system_view_parent_class = NULL;
static gint ComponentsInspectorSystemViewDetailRow_private_offset;
static gpointer components_inspector_system_view_detail_row_parent_class = NULL;

static ComponentsInspectorSystemViewDetailRow* components_inspector_system_view_detail_row_new (const gchar* label,
                                                                                         const gchar* value);
static ComponentsInspectorSystemViewDetailRow* components_inspector_system_view_detail_row_construct (GType object_type,
                                                                                               const gchar* label,
                                                                                               const gchar* value);
static GType components_inspector_system_view_detail_row_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static GtkGrid* components_inspector_system_view_detail_row_get_layout (ComponentsInspectorSystemViewDetailRow* self);
static void components_inspector_system_view_detail_row_set_layout (ComponentsInspectorSystemViewDetailRow* self,
                                                             GtkGrid* value);
static GtkLabel* components_inspector_system_view_detail_row_get_label (ComponentsInspectorSystemViewDetailRow* self);
static void components_inspector_system_view_detail_row_set_label (ComponentsInspectorSystemViewDetailRow* self,
                                                            GtkLabel* value);
static GtkLabel* components_inspector_system_view_detail_row_get_value (ComponentsInspectorSystemViewDetailRow* self);
static void components_inspector_system_view_detail_row_set_value (ComponentsInspectorSystemViewDetailRow* self,
                                                            GtkLabel* value);
static void components_inspector_system_view_detail_row_finalize (GObject * obj);
static GType components_inspector_system_view_detail_row_get_type_once (void);
static void _vala_components_inspector_system_view_detail_row_get_property (GObject * object,
                                                                     guint property_id,
                                                                     GValue * value,
                                                                     GParamSpec * pspec);
static void _vala_components_inspector_system_view_detail_row_set_property (GObject * object,
                                                                     guint property_id,
                                                                     const GValue * value,
                                                                     GParamSpec * pspec);
static void components_inspector_system_view_finalize (GObject * obj);
static GType components_inspector_system_view_get_type_once (void);

static inline gpointer
components_inspector_system_view_get_instance_private (ComponentsInspectorSystemView* self)
{
	return G_STRUCT_MEMBER_P (self, ComponentsInspectorSystemView_private_offset);
}

ComponentsInspectorSystemView*
components_inspector_system_view_construct (GType object_type,
                                            ApplicationClient* application)
{
	ComponentsInspectorSystemView * self = NULL;
	GeeCollection* _tmp0_;
	g_return_val_if_fail (APPLICATION_IS_CLIENT (application), NULL);
	self = (ComponentsInspectorSystemView*) g_object_new (object_type, NULL);
	_tmp0_ = application_client_get_runtime_information (application);
	_g_object_unref0 (self->priv->details);
	self->priv->details = _tmp0_;
	{
		GeeIterator* _detail_it = NULL;
		GeeCollection* _tmp1_;
		GeeIterator* _tmp2_;
		_tmp1_ = self->priv->details;
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
		_detail_it = _tmp2_;
		while (TRUE) {
			GeeIterator* _tmp3_;
			ApplicationClientRuntimeDetail* detail = NULL;
			GeeIterator* _tmp4_;
			gpointer _tmp5_;
			GtkListBox* _tmp6_;
			ApplicationClientRuntimeDetail* _tmp7_;
			const gchar* _tmp8_;
			gchar* _tmp9_;
			gchar* _tmp10_;
			ApplicationClientRuntimeDetail* _tmp11_;
			const gchar* _tmp12_;
			ComponentsInspectorSystemViewDetailRow* _tmp13_;
			ComponentsInspectorSystemViewDetailRow* _tmp14_;
			_tmp3_ = _detail_it;
			if (!gee_iterator_next (_tmp3_)) {
				break;
			}
			_tmp4_ = _detail_it;
			_tmp5_ = gee_iterator_get (_tmp4_);
			detail = (ApplicationClientRuntimeDetail*) _tmp5_;
			_tmp6_ = self->priv->system_list;
			_tmp7_ = detail;
			_tmp8_ = (*_tmp7_).name;
			_tmp9_ = g_strdup_printf ("%s:", _tmp8_);
			_tmp10_ = _tmp9_;
			_tmp11_ = detail;
			_tmp12_ = (*_tmp11_).value;
			_tmp13_ = components_inspector_system_view_detail_row_new (_tmp10_, _tmp12_);
			g_object_ref_sink (_tmp13_);
			_tmp14_ = _tmp13_;
			gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, gtk_widget_get_type (), GtkWidget));
			_g_object_unref0 (_tmp14_);
			_g_free0 (_tmp10_);
			_application_client_runtime_detail_free0 (detail);
		}
		_g_object_unref0 (_detail_it);
	}
	return self;
}

ComponentsInspectorSystemView*
components_inspector_system_view_new (ApplicationClient* application)
{
	return components_inspector_system_view_construct (COMPONENTS_TYPE_INSPECTOR_SYSTEM_VIEW, application);
}

void
components_inspector_system_view_save (ComponentsInspectorSystemView* self,
                                       GDataOutputStream* out,
                                       ComponentsInspectorTextFormat format,
                                       GCancellable* cancellable,
                                       GError** error)
{
	gchar* line_sep = NULL;
	gchar* _tmp0_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (COMPONENTS_IS_INSPECTOR_SYSTEM_VIEW (self));
	g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (out, g_data_output_stream_get_type ()));
	g_return_if_fail ((cancellable == NULL) || G_TYPE_CHECK_INSTANCE_TYPE (cancellable, g_cancellable_get_type ()));
	_tmp0_ = components_inspector_text_format_get_line_separator (format);
	line_sep = _tmp0_;
	{
		GeeIterator* _detail_it = NULL;
		GeeCollection* _tmp1_;
		GeeIterator* _tmp2_;
		_tmp1_ = self->priv->details;
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
		_detail_it = _tmp2_;
		while (TRUE) {
			GeeIterator* _tmp3_;
			ApplicationClientRuntimeDetail* detail = NULL;
			GeeIterator* _tmp4_;
			gpointer _tmp5_;
			ApplicationClientRuntimeDetail* _tmp6_;
			const gchar* _tmp7_;
			ApplicationClientRuntimeDetail* _tmp8_;
			const gchar* _tmp9_;
			const gchar* _tmp10_;
			_tmp3_ = _detail_it;
			if (!gee_iterator_next (_tmp3_)) {
				break;
			}
			_tmp4_ = _detail_it;
			_tmp5_ = gee_iterator_get (_tmp4_);
			detail = (ApplicationClientRuntimeDetail*) _tmp5_;
			_tmp6_ = detail;
			_tmp7_ = (*_tmp6_).name;
			g_data_output_stream_put_string (out, _tmp7_, NULL, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				g_propagate_error (error, _inner_error0_);
				_application_client_runtime_detail_free0 (detail);
				_g_object_unref0 (_detail_it);
				_g_free0 (line_sep);
				return;
			}
			g_data_output_stream_put_string (out, ": ", NULL, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				g_propagate_error (error, _inner_error0_);
				_application_client_runtime_detail_free0 (detail);
				_g_object_unref0 (_detail_it);
				_g_free0 (line_sep);
				return;
			}
			_tmp8_ = detail;
			_tmp9_ = (*_tmp8_).value;
			g_data_output_stream_put_string (out, _tmp9_, NULL, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				g_propagate_error (error, _inner_error0_);
				_application_client_runtime_detail_free0 (detail);
				_g_object_unref0 (_detail_it);
				_g_free0 (line_sep);
				return;
			}
			_tmp10_ = line_sep;
			g_data_output_stream_put_string (out, _tmp10_, NULL, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				g_propagate_error (error, _inner_error0_);
				_application_client_runtime_detail_free0 (detail);
				_g_object_unref0 (_detail_it);
				_g_free0 (line_sep);
				return;
			}
			_application_client_runtime_detail_free0 (detail);
		}
		_g_object_unref0 (_detail_it);
	}
	_g_free0 (line_sep);
}

static inline gpointer
components_inspector_system_view_detail_row_get_instance_private (ComponentsInspectorSystemViewDetailRow* self)
{
	return G_STRUCT_MEMBER_P (self, ComponentsInspectorSystemViewDetailRow_private_offset);
}

static GtkGrid*
components_inspector_system_view_detail_row_get_layout (ComponentsInspectorSystemViewDetailRow* self)
{
	GtkGrid* result;
	GtkGrid* _tmp0_;
	g_return_val_if_fail (COMPONENTS_INSPECTOR_SYSTEM_VIEW_IS_DETAIL_ROW (self), NULL);
	_tmp0_ = self->priv->_layout;
	result = _tmp0_;
	return result;
}

static gpointer
_g_object_ref0 (gpointer self)
{
	return self ? g_object_ref (self) : NULL;
}

static void
components_inspector_system_view_detail_row_set_layout (ComponentsInspectorSystemViewDetailRow* self,
                                                        GtkGrid* value)
{
	GtkGrid* _tmp0_;
	g_return_if_fail (COMPONENTS_INSPECTOR_SYSTEM_VIEW_IS_DETAIL_ROW (self));
	_tmp0_ = _g_object_ref0 (value);
	_g_object_unref0 (self->priv->_layout);
	self->priv->_layout = _tmp0_;
}

static GtkLabel*
components_inspector_system_view_detail_row_get_label (ComponentsInspectorSystemViewDetailRow* self)
{
	GtkLabel* result;
	GtkLabel* _tmp0_;
	g_return_val_if_fail (COMPONENTS_INSPECTOR_SYSTEM_VIEW_IS_DETAIL_ROW (self), NULL);
	_tmp0_ = self->priv->_label;
	result = _tmp0_;
	return result;
}

static void
components_inspector_system_view_detail_row_set_label (ComponentsInspectorSystemViewDetailRow* self,
                                                       GtkLabel* value)
{
	GtkLabel* _tmp0_;
	g_return_if_fail (COMPONENTS_INSPECTOR_SYSTEM_VIEW_IS_DETAIL_ROW (self));
	_tmp0_ = _g_object_ref0 (value);
	_g_object_unref0 (self->priv->_label);
	self->priv->_label = _tmp0_;
}

static GtkLabel*
components_inspector_system_view_detail_row_get_value (ComponentsInspectorSystemViewDetailRow* self)
{
	GtkLabel* result;
	GtkLabel* _tmp0_;
	g_return_val_if_fail (COMPONENTS_INSPECTOR_SYSTEM_VIEW_IS_DETAIL_ROW (self), NULL);
	_tmp0_ = self->priv->_value;
	result = _tmp0_;
	return result;
}

static void
components_inspector_system_view_detail_row_set_value (ComponentsInspectorSystemViewDetailRow* self,
                                                       GtkLabel* value)
{
	GtkLabel* _tmp0_;
	g_return_if_fail (COMPONENTS_INSPECTOR_SYSTEM_VIEW_IS_DETAIL_ROW (self));
	_tmp0_ = _g_object_ref0 (value);
	_g_object_unref0 (self->priv->_value);
	self->priv->_value = _tmp0_;
}

static ComponentsInspectorSystemViewDetailRow*
components_inspector_system_view_detail_row_construct (GType object_type,
                                                       const gchar* label,
                                                       const gchar* value)
{
	ComponentsInspectorSystemViewDetailRow * self = NULL;
	GtkStyleContext* _tmp0_;
	GtkLabel* _tmp1_;
	GtkLabel* _tmp2_;
	GtkLabel* _tmp3_;
	GtkLabel* _tmp4_;
	GtkLabel* _tmp5_;
	GtkLabel* _tmp6_;
	GtkLabel* _tmp7_;
	GtkLabel* _tmp8_;
	GtkLabel* _tmp9_;
	GtkLabel* _tmp10_;
	GtkGrid* _tmp11_;
	GtkGrid* _tmp12_;
	GtkLabel* _tmp13_;
	GtkGrid* _tmp14_;
	GtkLabel* _tmp15_;
	GtkGrid* _tmp16_;
	GtkGrid* _tmp17_;
	g_return_val_if_fail (label != NULL, NULL);
	g_return_val_if_fail (value != NULL, NULL);
	self = (ComponentsInspectorSystemViewDetailRow*) g_object_new (object_type, NULL);
	_tmp0_ = gtk_widget_get_style_context (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
	gtk_style_context_add_class (_tmp0_, "geary-labelled-row");
	_tmp1_ = self->priv->_label;
	gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_START);
	_tmp2_ = self->priv->_label;
	gtk_widget_set_valign (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_CENTER);
	_tmp3_ = self->priv->_label;
	gtk_label_set_text (_tmp3_, label);
	_tmp4_ = self->priv->_label;
	gtk_widget_show (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, gtk_widget_get_type (), GtkWidget));
	_tmp5_ = self->priv->_value;
	gtk_widget_set_halign (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_END);
	_tmp6_ = self->priv->_value;
	gtk_widget_set_hexpand (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, gtk_widget_get_type (), GtkWidget), TRUE);
	_tmp7_ = self->priv->_value;
	gtk_widget_set_valign (G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, gtk_widget_get_type (), GtkWidget), GTK_ALIGN_CENTER);
	_tmp8_ = self->priv->_value;
	gtk_label_set_xalign (_tmp8_, 1.0f);
	_tmp9_ = self->priv->_value;
	gtk_label_set_text (_tmp9_, value);
	_tmp10_ = self->priv->_value;
	gtk_widget_show (G_TYPE_CHECK_INSTANCE_CAST (_tmp10_, gtk_widget_get_type (), GtkWidget));
	_tmp11_ = self->priv->_layout;
	gtk_orientable_set_orientation (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, gtk_orientable_get_type (), GtkOrientable), GTK_ORIENTATION_HORIZONTAL);
	_tmp12_ = self->priv->_layout;
	_tmp13_ = self->priv->_label;
	gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, gtk_widget_get_type (), GtkWidget));
	_tmp14_ = self->priv->_layout;
	_tmp15_ = self->priv->_value;
	gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, gtk_widget_get_type (), GtkWidget));
	_tmp16_ = self->priv->_layout;
	gtk_widget_show (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, gtk_widget_get_type (), GtkWidget));
	_tmp17_ = self->priv->_layout;
	gtk_container_add (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_container_get_type (), GtkContainer), G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, gtk_widget_get_type (), GtkWidget));
	gtk_list_box_row_set_activatable (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_list_box_row_get_type (), GtkListBoxRow), FALSE);
	gtk_widget_show (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_widget_get_type (), GtkWidget));
	return self;
}

static ComponentsInspectorSystemViewDetailRow*
components_inspector_system_view_detail_row_new (const gchar* label,
                                                 const gchar* value)
{
	return components_inspector_system_view_detail_row_construct (COMPONENTS_INSPECTOR_SYSTEM_VIEW_TYPE_DETAIL_ROW, label, value);
}

static void
components_inspector_system_view_detail_row_class_init (ComponentsInspectorSystemViewDetailRowClass * klass,
                                                        gpointer klass_data)
{
	components_inspector_system_view_detail_row_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ComponentsInspectorSystemViewDetailRow_private_offset);
	G_OBJECT_CLASS (klass)->get_property = _vala_components_inspector_system_view_detail_row_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_components_inspector_system_view_detail_row_set_property;
	G_OBJECT_CLASS (klass)->finalize = components_inspector_system_view_detail_row_finalize;
}

static void
components_inspector_system_view_detail_row_instance_init (ComponentsInspectorSystemViewDetailRow * self,
                                                           gpointer klass)
{
	GtkGrid* _tmp0_;
	GtkLabel* _tmp1_;
	GtkLabel* _tmp2_;
	self->priv = components_inspector_system_view_detail_row_get_instance_private (self);
	_tmp0_ = (GtkGrid*) gtk_grid_new ();
	g_object_ref_sink (_tmp0_);
	self->priv->_layout = _tmp0_;
	_tmp1_ = (GtkLabel*) gtk_label_new ("");
	g_object_ref_sink (_tmp1_);
	self->priv->_label = _tmp1_;
	_tmp2_ = (GtkLabel*) gtk_label_new ("");
	g_object_ref_sink (_tmp2_);
	self->priv->_value = _tmp2_;
}

static void
components_inspector_system_view_detail_row_finalize (GObject * obj)
{
	ComponentsInspectorSystemViewDetailRow * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, COMPONENTS_INSPECTOR_SYSTEM_VIEW_TYPE_DETAIL_ROW, ComponentsInspectorSystemViewDetailRow);
	_g_object_unref0 (self->priv->_layout);
	_g_object_unref0 (self->priv->_label);
	_g_object_unref0 (self->priv->_value);
	G_OBJECT_CLASS (components_inspector_system_view_detail_row_parent_class)->finalize (obj);
}

static GType
components_inspector_system_view_detail_row_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ComponentsInspectorSystemViewDetailRowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) components_inspector_system_view_detail_row_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ComponentsInspectorSystemViewDetailRow), 0, (GInstanceInitFunc) components_inspector_system_view_detail_row_instance_init, NULL };
	GType components_inspector_system_view_detail_row_type_id;
	components_inspector_system_view_detail_row_type_id = g_type_register_static (gtk_list_box_row_get_type (), "ComponentsInspectorSystemViewDetailRow", &g_define_type_info, 0);
	ComponentsInspectorSystemViewDetailRow_private_offset = g_type_add_instance_private (components_inspector_system_view_detail_row_type_id, sizeof (ComponentsInspectorSystemViewDetailRowPrivate));
	return components_inspector_system_view_detail_row_type_id;
}

static GType
components_inspector_system_view_detail_row_get_type (void)
{
	static volatile gsize components_inspector_system_view_detail_row_type_id__once = 0;
	if (g_once_init_enter (&components_inspector_system_view_detail_row_type_id__once)) {
		GType components_inspector_system_view_detail_row_type_id;
		components_inspector_system_view_detail_row_type_id = components_inspector_system_view_detail_row_get_type_once ();
		g_once_init_leave (&components_inspector_system_view_detail_row_type_id__once, components_inspector_system_view_detail_row_type_id);
	}
	return components_inspector_system_view_detail_row_type_id__once;
}

static void
_vala_components_inspector_system_view_detail_row_get_property (GObject * object,
                                                                guint property_id,
                                                                GValue * value,
                                                                GParamSpec * pspec)
{
	ComponentsInspectorSystemViewDetailRow * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, COMPONENTS_INSPECTOR_SYSTEM_VIEW_TYPE_DETAIL_ROW, ComponentsInspectorSystemViewDetailRow);
	switch (property_id) {
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
_vala_components_inspector_system_view_detail_row_set_property (GObject * object,
                                                                guint property_id,
                                                                const GValue * value,
                                                                GParamSpec * pspec)
{
	ComponentsInspectorSystemViewDetailRow * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, COMPONENTS_INSPECTOR_SYSTEM_VIEW_TYPE_DETAIL_ROW, ComponentsInspectorSystemViewDetailRow);
	switch (property_id) {
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}

static void
components_inspector_system_view_class_init (ComponentsInspectorSystemViewClass * klass,
                                             gpointer klass_data)
{
	components_inspector_system_view_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &ComponentsInspectorSystemView_private_offset);
	G_OBJECT_CLASS (klass)->finalize = components_inspector_system_view_finalize;
	gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/Geary/components-inspector-system-view.ui");
	gtk_widget_class_bind_template_child_full (GTK_WIDGET_CLASS (klass), "system_list", FALSE, ComponentsInspectorSystemView_private_offset + G_STRUCT_OFFSET (ComponentsInspectorSystemViewPrivate, system_list));
}

static void
components_inspector_system_view_instance_init (ComponentsInspectorSystemView * self,
                                                gpointer klass)
{
	self->priv = components_inspector_system_view_get_instance_private (self);
	gtk_widget_init_template (GTK_WIDGET (self));
}

static void
components_inspector_system_view_finalize (GObject * obj)
{
	ComponentsInspectorSystemView * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, COMPONENTS_TYPE_INSPECTOR_SYSTEM_VIEW, ComponentsInspectorSystemView);
	_g_object_unref0 (self->priv->details);
	G_OBJECT_CLASS (components_inspector_system_view_parent_class)->finalize (obj);
}

/**
 * A view that displays system and library information.
 */
static GType
components_inspector_system_view_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ComponentsInspectorSystemViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) components_inspector_system_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ComponentsInspectorSystemView), 0, (GInstanceInitFunc) components_inspector_system_view_instance_init, NULL };
	GType components_inspector_system_view_type_id;
	components_inspector_system_view_type_id = g_type_register_static (gtk_grid_get_type (), "ComponentsInspectorSystemView", &g_define_type_info, 0);
	ComponentsInspectorSystemView_private_offset = g_type_add_instance_private (components_inspector_system_view_type_id, sizeof (ComponentsInspectorSystemViewPrivate));
	return components_inspector_system_view_type_id;
}

GType
components_inspector_system_view_get_type (void)
{
	static volatile gsize components_inspector_system_view_type_id__once = 0;
	if (g_once_init_enter (&components_inspector_system_view_type_id__once)) {
		GType components_inspector_system_view_type_id;
		components_inspector_system_view_type_id = components_inspector_system_view_get_type_once ();
		g_once_init_leave (&components_inspector_system_view_type_id__once, components_inspector_system_view_type_id);
	}
	return components_inspector_system_view_type_id__once;
}

