/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/* 
 * e-table-field-chooser-dialog.c
 * Copyright (C) 2000  Ximian, Inc.
 * Author: Chris Lahey <clahey@ximian.com>
 *
 * This library 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 library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

#include <config.h>
#include <libgnomeui/gnome-stock.h>
#include "e-table-field-chooser-dialog.h"

static void e_table_field_chooser_dialog_init		(ETableFieldChooserDialog		 *card);
static void e_table_field_chooser_dialog_class_init	(ETableFieldChooserDialogClass	 *klass);
static void e_table_field_chooser_dialog_set_arg (GtkObject *o, GtkArg *arg, guint arg_id);
static void e_table_field_chooser_dialog_get_arg (GtkObject *object, GtkArg *arg, guint arg_id);
static void e_table_field_chooser_dialog_destroy (GtkObject *object);
static void e_table_field_chooser_dialog_clicked (GnomeDialog *dialog, gint button);

static GnomeDialogClass *parent_class = NULL;

/* The arguments we take */
enum {
	ARG_0,
	ARG_DND_CODE,
	ARG_FULL_HEADER,
};

GtkType
e_table_field_chooser_dialog_get_type (void)
{
	static GtkType table_field_chooser_dialog_type = 0;

	if (!table_field_chooser_dialog_type)
		{
			static const GtkTypeInfo table_field_chooser_dialog_info =
			{
				"ETableFieldChooserDialog",
				sizeof (ETableFieldChooserDialog),
				sizeof (ETableFieldChooserDialogClass),
				(GtkClassInitFunc) e_table_field_chooser_dialog_class_init,
				(GtkObjectInitFunc) e_table_field_chooser_dialog_init,
				/* reserved_1 */ NULL,
				/* reserved_2 */ NULL,
				(GtkClassInitFunc) NULL,
			};

			table_field_chooser_dialog_type = gtk_type_unique (gnome_dialog_get_type (), &table_field_chooser_dialog_info);
		}

	return table_field_chooser_dialog_type;
}

static void
e_table_field_chooser_dialog_class_init (ETableFieldChooserDialogClass *klass)
{
	GtkObjectClass *object_class;
	GnomeDialogClass *dialog_class;

	object_class = (GtkObjectClass*) klass;
	dialog_class = GNOME_DIALOG_CLASS (klass);

	parent_class = gtk_type_class (gnome_dialog_get_type ());

	object_class->destroy = e_table_field_chooser_dialog_destroy;
	object_class->set_arg = e_table_field_chooser_dialog_set_arg;
	object_class->get_arg = e_table_field_chooser_dialog_get_arg;

	dialog_class->clicked = e_table_field_chooser_dialog_clicked;

	gtk_object_add_arg_type ("ETableFieldChooserDialog::dnd_code", GTK_TYPE_STRING,
				 GTK_ARG_READWRITE, ARG_DND_CODE);
	gtk_object_add_arg_type ("ETableFieldChooserDialog::full_header", GTK_TYPE_OBJECT,
				 GTK_ARG_READWRITE, ARG_FULL_HEADER);
}

static void
e_table_field_chooser_dialog_init (ETableFieldChooserDialog *e_table_field_chooser_dialog)
{
	GtkWidget *widget;

	e_table_field_chooser_dialog->etfc = NULL;
	e_table_field_chooser_dialog->dnd_code = g_strdup("");
	e_table_field_chooser_dialog->full_header = NULL;

	gnome_dialog_append_buttons(GNOME_DIALOG(e_table_field_chooser_dialog),
				    GNOME_STOCK_BUTTON_CLOSE,
				    NULL);

	gtk_window_set_policy(GTK_WINDOW(e_table_field_chooser_dialog), FALSE, TRUE, FALSE);

	widget = e_table_field_chooser_new();
	e_table_field_chooser_dialog->etfc = E_TABLE_FIELD_CHOOSER(widget);
	
	gtk_object_set(GTK_OBJECT(widget),
		       "dnd_code", e_table_field_chooser_dialog->dnd_code,
		       "full_header", e_table_field_chooser_dialog->full_header,
		       NULL);
	
	gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(e_table_field_chooser_dialog)->vbox),
			   widget, TRUE, TRUE, 0);

	gtk_widget_show(GTK_WIDGET(widget));
}

GtkWidget*
e_table_field_chooser_dialog_new (void)
{
	GtkWidget *widget = GTK_WIDGET (gtk_type_new (e_table_field_chooser_dialog_get_type ()));
	return widget;
}

static void
e_table_field_chooser_dialog_destroy (GtkObject *object)
{
	ETableFieldChooserDialog *etfcd = E_TABLE_FIELD_CHOOSER_DIALOG (object);
	g_free(etfcd->dnd_code);
	if (etfcd->full_header)
		gtk_object_unref(GTK_OBJECT(etfcd->full_header));
}

static void
e_table_field_chooser_dialog_set_arg (GtkObject *object, GtkArg *arg, guint arg_id)
{
	ETableFieldChooserDialog *etfcd = E_TABLE_FIELD_CHOOSER_DIALOG(object);
	switch (arg_id){
	case ARG_DND_CODE:
		g_free(etfcd->dnd_code);
		etfcd->dnd_code = g_strdup(GTK_VALUE_STRING (*arg));
		if (etfcd->etfc)
			gtk_object_set(GTK_OBJECT(etfcd->etfc),
				       "dnd_code", etfcd->dnd_code,
				       NULL);
		break;
	case ARG_FULL_HEADER:
		if (etfcd->full_header)
			gtk_object_unref(GTK_OBJECT(etfcd->full_header));
		if (GTK_VALUE_OBJECT(*arg))
			etfcd->full_header = E_TABLE_HEADER(GTK_VALUE_OBJECT(*arg));
		else
			etfcd->full_header = NULL;
		if (etfcd->full_header)
			gtk_object_ref(GTK_OBJECT(etfcd->full_header));
		if (etfcd->etfc)
			gtk_object_set(GTK_OBJECT(etfcd->etfc),
				       "full_header", etfcd->full_header,
				       NULL);
		break;
	default:
		break;
	}
}

static void
e_table_field_chooser_dialog_get_arg (GtkObject *object, GtkArg *arg, guint arg_id)
{
	ETableFieldChooserDialog *etfcd = E_TABLE_FIELD_CHOOSER_DIALOG(object);
	switch (arg_id) {
	case ARG_DND_CODE:
		GTK_VALUE_STRING (*arg) = g_strdup (etfcd->dnd_code);
		break;
	case ARG_FULL_HEADER:
		GTK_VALUE_OBJECT (*arg) = GTK_OBJECT(etfcd->full_header);
		break;
	default:
		arg->type = GTK_TYPE_INVALID;
		break;
	}
}

static void
e_table_field_chooser_dialog_clicked (GnomeDialog *dialog, int button)
{
	if (button == 0)
		gnome_dialog_close(dialog);
}
'><form class='right' method='get' action='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/audio/p5-CDDB'>
<input type='hidden' name='h' value='gnome-3.28'/><input type='hidden' name='id' value='aae6cd4c47aa393b07b0856d3ea8e13293c58c6b'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/?h=gnome-3.28&amp;id=aae6cd4c47aa393b07b0856d3ea8e13293c58c6b'>root</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/audio?h=gnome-3.28&amp;id=aae6cd4c47aa393b07b0856d3ea8e13293c58c6b'>audio</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/audio/p5-CDDB?h=gnome-3.28&amp;id=aae6cd4c47aa393b07b0856d3ea8e13293c58c6b'>p5-CDDB</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th></th><th class='left'>Commit message (<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/audio/p5-CDDB?h=gnome-3.28&amp;id=aae6cd4c47aa393b07b0856d3ea8e13293c58c6b&amp;showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Age</th><th class='left'>Files</th><th class='left'>Lines</th></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=65bfb75d5a6507b857f252222e3f2827dbf58715'>Some OCD cleanups on some of the perl@ ports.</a></td><td>adamw</td><td><span title='2015-03-13 07:00:02 +0800'>2015-03-13</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=9debac461b7729b783ca5a0f5e46461ddac07173'>Change the way Perl modules are installed, update the default Perl to 5.18.</a></td><td>mat</td><td><span title='2014-11-26 21:08:24 +0800'>2014-11-26</span></td><td>2</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=e2bb879256439a8ff2a063cb3c10aca73794f20f'>Cleanup plist</a></td><td>bapt</td><td><span title='2014-10-20 14:35:58 +0800'>2014-10-20</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+0</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=4aaf2ec0815410ab26ec8624e683760500cb2d7d'>support STAGEDIR.</a></td><td>vanilla</td><td><span title='2013-11-01 10:28:24 +0800'>2013-11-01</span></td><td>2</td><td><span class='deletions'>-4</span>/<span class='insertions'>+2</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=364fbf2c9f577bf02f623faf4a3cbad00fc1c84f'>Add NO_STAGE all over the place in preparation for the staging support (cat: ...</a></td><td>bapt</td><td><span title='2013-09-20 22:36:35 +0800'>2013-09-20</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=f173140cb46fca310a6d853066bf83b8767e9dec'>Update to 1.222.</a></td><td>mat</td><td><span title='2013-08-20 17:38:56 +0800'>2013-08-20</span></td><td>2</td><td><span class='deletions'>-3</span>/<span class='insertions'>+3</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=2fa31ba8cb1501e5f7045b7e6ea52aea332defe4'>- Update to 1.221</a></td><td>jadawin</td><td><span title='2013-08-08 17:21:47 +0800'>2013-08-08</span></td><td>2</td><td><span class='deletions'>-3</span>/<span class='insertions'>+3</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=f47f83f9c8923b3b0f740482331aab0d0aa669e9'>- Convert to new perl framework</a></td><td>mat</td><td><span title='2013-08-03 02:52:07 +0800'>2013-08-03</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+2</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=9fbef2c45b9dda637fe075ec12b924521e028f42'>For perl@ owned ports:</a></td><td>eadler</td><td><span title='2013-03-29 08:44:53 +0800'>2013-03-29</span></td><td>1</td><td><span class='deletions'>-6</span>/<span class='insertions'>+2</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=3d358f694f88b9d39bce56550f8728a378c53836'>- remove maintainer tags from pkg-descr</a></td><td>eadler</td><td><span title='2011-10-23 07:50:23 +0800'>2011-10-23</span></td><td>1</td><td><span class='deletions'>-3</span>/<span class='insertions'>+0</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=b902a95810000e509c4d4d2472a0a33e4e460d7c'>- Use canonical format for FreeBSD.org MAINTAINER addresses</a></td><td>sunpoet</td><td><span title='2010-12-26 00:55:41 +0800'>2010-12-26</span></td><td>2</td><td><span class='deletions'>-2</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=a779eba63a70f0e0c7fd58921acf9d263b93210d'>Update to 1.220.</a></td><td>tobez</td><td><span title='2010-03-08 22:13:37 +0800'>2010-03-08</span></td><td>2</td><td><span class='deletions'>-4</span>/<span class='insertions'>+4</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=ca3dc7ed288edc64252ae9e86b41fd46741948d1'>Update to 1.21.</a></td><td>tobez</td><td><span title='2009-07-28 22:34:43 +0800'>2009-07-28</span></td><td>2</td><td><span class='deletions'>-4</span>/<span class='insertions'>+4</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=4bfe6f42bf69121eb53aaead04508848637cc94c'>Reassign my p5-* ports to perl@ so more than one person</a></td><td>erwin</td><td><span title='2009-01-30 01:41:17 +0800'>2009-01-30</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=91968dfc6337bcc35a62931582f73b7b764c1258'>A few typo fixes for ports/audio descriptions.</a></td><td>olgeni</td><td><span title='2008-06-15 20:52:11 +0800'>2008-06-15</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=c94d115b8e9cb4ad3d8424685fe7c324767594f3'>- Take advantage of CPAN macro from bsd.sites.mk, change ${MASTER_SITE_PERL_C...</a></td><td>araujo</td><td><span title='2008-04-17 22:30:31 +0800'>2008-04-17</span></td><td>1</td><td><span class='deletions'>-2</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=7d779ba8dac888a38cb73d33e59f95714c82bcbb'>Update to 1.17</a></td><td>erwin</td><td><span title='2006-04-06 02:27:54 +0800'>2006-04-06</span></td><td>2</td><td><span class='deletions'>-4</span>/<span class='insertions'>+4</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=120fe1236a6ccba7e4da14d0b1452951719c1de5'>SHA256ify</a></td><td>edwin</td><td><span title='2006-01-22 16:13:12 +0800'>2006-01-22</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=fef5b7364185bf081191179e9fd58a68b6045b1b'>Update to 1.16</a></td><td>erwin</td><td><span title='2005-09-22 16:43:44 +0800'>2005-09-22</span></td><td>2</td><td><span class='deletions'>-3</span>/<span class='insertions'>+3</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=b0ed182f7d14520369ed0a2b511ef4f834544e94'>search.cpan.org redirect reduction canonicalization project, pass 1:</a></td><td>fenner</td><td><span title='2005-09-22 03:31:43 +0800'>2005-09-22</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=994d7731039d28aea8ea88a9e093c062730cdf19'>Update to 1.15</a></td><td>erwin</td><td><span title='2004-10-14 02:30:42 +0800'>2004-10-14</span></td><td>2</td><td><span class='deletions'>-3</span>/<span class='insertions'>+3</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=fdb8ad294dc8f8830d1473bc54dbb46643f75db1'>Update to 1.12</a></td><td>erwin</td><td><span title='2004-02-24 22:38:25 +0800'>2004-02-24</span></td><td>2</td><td><span class='deletions'>-2</span>/<span class='insertions'>+3</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=2662b4a99ab772eebab8802a5fe4a03a631306f9'>- Update to 1.11</a></td><td>erwin</td><td><span title='2003-08-14 15:18:59 +0800'>2003-08-14</span></td><td>4</td><td><span class='deletions'>-9</span>/<span class='insertions'>+8</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=d4608b373f3f182f549176d35e5175610fd50a8a'>De-pkg-comment.</a></td><td>knu</td><td><span title='2003-02-21 01:07:10 +0800'>2003-02-21</span></td><td>2</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=a882364f2403bc9d88e823745313b7de799bd176'>o Rollback PORTCOMMENT modifications while this feature's implementation</a></td><td>lioux</td><td><span title='2002-11-11 00:48:51 +0800'>2002-11-11</span></td><td>2</td><td><span class='deletions'>-2</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/audio/p5-CDDB?h=gnome-3.28&amp;id=5ccea0eab4e8d2184fd2a06716209f6e7bae4d8a'>Use PORTCOMMENT in the Makefile, and whack the pkg-comment.</a></td><td>adamw</td><td><span title='2002-11-07 06:47:41 +0800'>2002-11-07</span></td><td>2</td><td><span class='deletions'>-1</span>/<span class='insertions'>+2</span></td></tr>