/* IPage.c generated by valac 0.26.2, the Vala compiler
 * generated from IPage.vala, do not modify */

/*  This file is part of corebird, a Gtk+ linux Twitter client.
 *  Copyright (C) 2013 Timm Bäder
 *
 *  corebird is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  corebird is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with corebird.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <glib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
#include <stdlib.h>
#include <string.h>


#define TYPE_IPAGE (ipage_get_type ())
#define IPAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IPAGE, IPage))
#define IS_IPAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IPAGE))
#define IPAGE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_IPAGE, IPageIface))

typedef struct _IPage IPage;
typedef struct _IPageIface IPageIface;

#define TYPE_BUNDLE (bundle_get_type ())
#define BUNDLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_BUNDLE, Bundle))
#define BUNDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_BUNDLE, BundleClass))
#define IS_BUNDLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_BUNDLE))
#define IS_BUNDLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_BUNDLE))
#define BUNDLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_BUNDLE, BundleClass))

typedef struct _Bundle Bundle;
typedef struct _BundleClass BundleClass;

#define TYPE_MAIN_WINDOW (main_window_get_type ())
#define MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MAIN_WINDOW, MainWindow))
#define MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MAIN_WINDOW, MainWindowClass))
#define IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MAIN_WINDOW))
#define IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MAIN_WINDOW))
#define MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MAIN_WINDOW, MainWindowClass))

typedef struct _MainWindow MainWindow;
typedef struct _MainWindowClass MainWindowClass;

#define TYPE_ACCOUNT (account_get_type ())
#define ACCOUNT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ACCOUNT, Account))
#define ACCOUNT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ACCOUNT, AccountClass))
#define IS_ACCOUNT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ACCOUNT))
#define IS_ACCOUNT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ACCOUNT))
#define ACCOUNT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ACCOUNT, AccountClass))

typedef struct _Account Account;
typedef struct _AccountClass AccountClass;

struct _IPageIface {
	GTypeInterface parent_iface;
	void (*on_join) (IPage* self, gint page_id, Bundle* args);
	void (*on_leave) (IPage* self);
	void (*create_tool_button) (IPage* self, GtkRadioButton* group);
	GtkRadioButton* (*get_tool_button) (IPage* self);
	gchar* (*get_title) (IPage* self);
	gboolean (*handles_double_open) (IPage* self);
	void (*double_open) (IPage* self);
	gint (*get_id) (IPage* self);
	void (*set_id) (IPage* self, gint value);
	MainWindow* (*get_main_window) (IPage* self);
	void (*set_main_window) (IPage* self, MainWindow* value);
	Account* (*get_account) (IPage* self);
	void (*set_account) (IPage* self, Account* value);
};



GType bundle_get_type (void) G_GNUC_CONST;
GType main_window_get_type (void) G_GNUC_CONST;
GType account_get_type (void) G_GNUC_CONST;
GType ipage_get_type (void) G_GNUC_CONST;
void ipage_on_join (IPage* self, gint page_id, Bundle* args);
void ipage_on_leave (IPage* self);
void ipage_create_tool_button (IPage* self, GtkRadioButton* group);
GtkRadioButton* ipage_get_tool_button (IPage* self);
gchar* ipage_get_title (IPage* self);
gboolean ipage_handles_double_open (IPage* self);
static gboolean ipage_real_handles_double_open (IPage* self);
void ipage_double_open (IPage* self);
static void ipage_real_double_open (IPage* self);
gint ipage_get_id (IPage* self);
void ipage_set_id (IPage* self, gint value);
MainWindow* ipage_get_main_window (IPage* self);
void ipage_set_main_window (IPage* self, MainWindow* value);
Account* ipage_get_account (IPage* self);
void ipage_set_account (IPage* self, Account* value);


void ipage_on_join (IPage* self, gint page_id, Bundle* args) {
	g_return_if_fail (IS_IPAGE (self));
	IPAGE_GET_INTERFACE (self)->on_join (self, page_id, args);
}


void ipage_on_leave (IPage* self) {
	g_return_if_fail (IS_IPAGE (self));
	IPAGE_GET_INTERFACE (self)->on_leave (self);
}


void ipage_create_tool_button (IPage* self, GtkRadioButton* group) {
	g_return_if_fail (IS_IPAGE (self));
	IPAGE_GET_INTERFACE (self)->create_tool_button (self, group);
}


GtkRadioButton* ipage_get_tool_button (IPage* self) {
	g_return_val_if_fail (IS_IPAGE (self), NULL);
	return IPAGE_GET_INTERFACE (self)->get_tool_button (self);
}


gchar* ipage_get_title (IPage* self) {
	g_return_val_if_fail (IS_IPAGE (self), NULL);
	return IPAGE_GET_INTERFACE (self)->get_title (self);
}


static gboolean ipage_real_handles_double_open (IPage* self) {
	gboolean result = FALSE;
	result = FALSE;
	return result;
}


gboolean ipage_handles_double_open (IPage* self) {
	g_return_val_if_fail (IS_IPAGE (self), FALSE);
	return IPAGE_GET_INTERFACE (self)->handles_double_open (self);
}


static void ipage_real_double_open (IPage* self) {
}


void ipage_double_open (IPage* self) {
	g_return_if_fail (IS_IPAGE (self));
	IPAGE_GET_INTERFACE (self)->double_open (self);
}


gint ipage_get_id (IPage* self) {
	g_return_val_if_fail (IS_IPAGE (self), 0);
	return IPAGE_GET_INTERFACE (self)->get_id (self);
}


void ipage_set_id (IPage* self, gint value) {
	g_return_if_fail (IS_IPAGE (self));
	IPAGE_GET_INTERFACE (self)->set_id (self, value);
}


MainWindow* ipage_get_main_window (IPage* self) {
	g_return_val_if_fail (IS_IPAGE (self), NULL);
	return IPAGE_GET_INTERFACE (self)->get_main_window (self);
}


void ipage_set_main_window (IPage* self, MainWindow* value) {
	g_return_if_fail (IS_IPAGE (self));
	IPAGE_GET_INTERFACE (self)->set_main_window (self, value);
}


Account* ipage_get_account (IPage* self) {
	g_return_val_if_fail (IS_IPAGE (self), NULL);
	return IPAGE_GET_INTERFACE (self)->get_account (self);
}


void ipage_set_account (IPage* self, Account* value) {
	g_return_if_fail (IS_IPAGE (self));
	IPAGE_GET_INTERFACE (self)->set_account (self, value);
}


static void ipage_base_init (IPageIface * iface) {
	static gboolean initialized = FALSE;
	if (!initialized) {
		initialized = TRUE;
		g_object_interface_install_property (iface, g_param_spec_int ("id", "id", "id", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
		g_object_interface_install_property (iface, g_param_spec_object ("main-window", "main-window", "main-window", TYPE_MAIN_WINDOW, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
		g_object_interface_install_property (iface, g_param_spec_object ("account", "account", "account", TYPE_ACCOUNT, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
		iface->handles_double_open = ipage_real_handles_double_open;
		iface->double_open = ipage_real_double_open;
	}
}


/**
 * Page in a MainWindow(i.e. in the MainWindow's GtkStack).
 */
GType ipage_get_type (void) {
	static volatile gsize ipage_type_id__volatile = 0;
	if (g_once_init_enter (&ipage_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (IPageIface), (GBaseInitFunc) ipage_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
		GType ipage_type_id;
		ipage_type_id = g_type_register_static (G_TYPE_INTERFACE, "IPage", &g_define_type_info, 0);
		g_type_interface_add_prerequisite (ipage_type_id, gtk_widget_get_type ());
		g_once_init_leave (&ipage_type_id__volatile, ipage_type_id);
	}
	return ipage_type_id__volatile;
}



