/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/* vim: set sw=8: */

/*
 * guppi-gnumeric-config-guru.c: Manage
 *
 * Copyright (C) 2001 Jody Goldberg (jgoldberg@home.com)
 *
 * This program 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 2 of the
 * License, or (at your option) any later version.
 *
 * This program 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 this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 * USA
 */

#include <config.h>
#include "guppi-gnumeric-config-guru.h"
#include "guppi-gnumeric-manager.h"

#include <guppi-memory.h>

static BonoboControlClass *gup_gnm_config_guru_parent_class = NULL;

GupGnmConfigGuru *
gup_gnm_config_guru_from_servant (PortableServer_Servant servant)
{
	return GUP_GNM_CONFIG_GURU (bonobo_object_from_servant (servant));
}

GupGnmGraph *
gup_gnm_config_guru_get_graph (GupGnmConfigGuru *cguru)
{
	g_return_val_if_fail (IS_GUP_GNM_CONFIG_GURU (cguru), NULL);
	return cguru->graph;
}

static void
gup_gnm_config_guru_destroy (GtkObject *obj)
{
	GupGnmConfigGuru *cguru = GUP_GNM_CONFIG_GURU (obj);

	ggd (1, printf ("Destroy guru %p \n", cguru););

	GTK_OBJECT_CLASS (gup_gnm_config_guru_parent_class)->destroy (obj);
}

static void
impl_applyChanges (PortableServer_Servant servant, CORBA_Environment *ev)
{
	GupGnmConfigGuru *cguru = gup_gnm_config_guru_from_servant (servant);

	g_return_if_fail (cguru != NULL);
	ggd(5, printf ("applychanges config-guru == %p\n", cguru));

	gup_gnm_graph_set_spec (&cguru->graph->manager->graph, cguru->graph->spec, TRUE);
}

static void
gup_gnm_config_guru_class_init (GupGnmConfigGuruClass *klass)
{
	GtkObjectClass *object_class = (GtkObjectClass *) klass;
	POA_GUPPI_GNUMERIC_CONFIG_GURU(epv) *epv = &klass->epv;

	gup_gnm_config_guru_parent_class = gtk_type_class (bonobo_control_get_type ());
	object_class->destroy   = gup_gnm_config_guru_destroy;

	epv->applyChanges	= impl_applyChanges;
}

GtkType
gup_gnm_config_guru_get_type (void)
{
	static GtkType type = 0;

	if (!type) {
		GtkTypeInfo info = {
			"GupGnmConfigGuru",
			sizeof (GupGnmConfigGuru),
			sizeof (GupGnmConfigGuruClass),
			(GtkClassInitFunc) gup_gnm_config_guru_class_init,
			(GtkObjectInitFunc) NULL,
			NULL,			/* reserved 1 */
			NULL,			/* reserved 2 */
			(GtkClassInitFunc) NULL
		};

		type = bonobo_x_type_unique (
			bonobo_control_get_type (),
			POA_GUPPI_GNUMERIC_CONFIG_GURU(init),
			POA_GUPPI_GNUMERIC_CONFIG_GURU(fini),
			GTK_STRUCT_OFFSET (GupGnmConfigGuruClass, epv),
			&info);
	}

	return type;
}

GupGnmConfigGuru *
gup_gnm_config_guru_construct (GupGnmConfigGuru *cguru,
			       GupGnmGraph *graph, GtkWidget *w)
{
	gtk_widget_show_all (w);

	ggd(5, printf ("gup_gnm_config_guru_construct == %p\n", cguru));

	cguru->graph = graph;

	bonobo_control_construct (BONOBO_CONTROL (cguru), w);
	return cguru;
}

GupGnmConfigGuru *
gup_gnm_config_guru_new (GupGnmGraph *graph, GtkWidget *w)
{
	GupGnmConfigGuru *cguru = guppi_type_new (GUP_GNM_CONFIG_GURU_TYPE);

	ggd(5, printf ("gup_gnm_config_guru_new == %p\n", cguru));

	gup_gnm_config_guru_construct (cguru, graph, w);
	return cguru;
}


syntax highlighted by Code2HTML, v. 0.9.1