/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * e-contact-editor.c * Copyright (C) 2000 Helix Code, Inc. * Author: Chris Lahey * * 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 #include "e-contact-editor.h" static void e_contact_editor_init (EContactEditor *card); static void e_contact_editor_class_init (EContactEditorClass *klass); static void e_contact_editor_set_arg (GtkObject *o, GtkArg *arg, guint arg_id); static void e_contact_editor_get_arg (GtkObject *object, GtkArg *arg, guint arg_id); static GtkNotebookClass *parent_class = NULL; #if 0 enum { E_CONTACT_EDITOR_RESIZE, E_CONTACT_EDITOR_LAST_SIGNAL }; static guint e_contact_editor_signals[E_CONTACT_EDITOR_LAST_SIGNAL] = { 0 }; #endif /* The arguments we take */ enum { ARG_0, ARG_CARD }; GtkType e_contact_editor_get_type (void) { static GtkType contact_editor_type = 0; if (!contact_editor_type) { static const GtkTypeInfo contact_editor_info = { "EContactEditor", sizeof (EContactEditor), sizeof (EContactEditorClass), (GtkClassInitFunc) e_contact_editor_class_init, (GtkObjectInitFunc) e_contact_editor_init, /* reserved_1 */ NULL, /* reserved_2 */ NULL, (GtkClassInitFunc) NULL, }; contact_editor_type = gtk_type_unique (gtk_notebook_get_type (), &contact_editor_info); } return contact_editor_type; } static void e_contact_editor_class_init (EContactEditorClass *klass) { GtkObjectClass *object_class; GtkNotebookClass *notebook_class; object_class = (GtkObjectClass*) klass; notebook_class = (GtkNotebookClass *) klass; parent_class = gtk_type_class (gtk_notebook_get_type ()); #if 0 e_contact_editor_signals[E_CONTACT_EDITOR_RESIZE] = gtk_signal_new ("resize", GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (EContactEditorClass, resize), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); gtk_object_class_add_signals (object_class, e_contact_editor_signals, E_CONTACT_EDITOR_LAST_SIGNAL); #endif gtk_object_add_arg_type ("EContactEditor::card", GTK_TYPE_OBJECT, GTK_ARG_READWRITE, ARG_CARD); object_class->set_arg = e_contact_editor_set_arg; object_class->get_arg = e_contact_editor_get_arg; } static GtkWidget * _create_page_general_name(EContactEditor *e_contact_editor) { GtkWidget *table; GtkWidget *alignment; table = gtk_table_new(3, 4, FALSE); alignment = gtk_alignment_new(0, 0, 0, 0); gtk_container_add(GTK_CONTAINER(alignment), gnome_pixmap_new_from_file("head.png")); gtk_table_attach(GTK_TABLE(table), alignment, 0, 1, 0, 4, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Full Name:")), 1, 2, 0, 1, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Job Title:")), 1, 2, 1, 2, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Company:")), 1, 2, 2, 3, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("File as:")), 1, 2, 3, 4, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_entry_new(), 2, 3, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_entry_new(), 2, 3, 1, 2, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_entry_new(), 2, 3, 2, 3, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_combo_new(), 2, 3, 3, 4, GTK_FILL | GTK_EXPAND, 0, 0, 0); return table; } static GtkWidget * _create_page_general_phone(EContactEditor *e_contact_editor) { GtkWidget *table; GtkWidget *alignment; table = gtk_table_new(3, 4, FALSE); alignment = gtk_alignment_new(0,0,0,0); gtk_container_add(GTK_CONTAINER(alignment), gnome_pixmap_new_from_file("phone.png")); gtk_table_attach(GTK_TABLE(table), alignment, 0, 1, 0, 4, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Home:")), 1, 2, 0, 1, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Car:")), 1, 2, 1, 2, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Mobile:")), 1, 2, 2, 3, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Business Fax:")), 1, 2, 3, 4, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_entry_new(), 2, 3, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_entry_new(), 2, 3, 1, 2, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_entry_new(), 2, 3, 2, 3, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_entry_new(), 2, 3, 3, 4, GTK_FILL | GTK_EXPAND, 0, 0, 0); return table; } static GtkWidget * _create_page_general_email(EContactEditor *e_contact_editor) { GtkWidget *table; GtkWidget *alignment; table = gtk_table_new(3, 1, FALSE); alignment = gtk_alignment_new(0,0,0,0); gtk_container_add(GTK_CONTAINER(alignment), gnome_pixmap_new_from_file("email.png")); gtk_table_attach(GTK_TABLE(table), alignment, 0, 1, 0, 1, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Email:")), 1, 2, 0, 1, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_entry_new(), 2, 3, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0); return table; } static GtkWidget * _create_page_general_web(EContactEditor *e_contact_editor) { GtkWidget *table; GtkWidget *alignment; table = gtk_table_new(3, 1, FALSE); alignment = gtk_alignment_new(0,0,0,0); gtk_container_add(GTK_CONTAINER(alignment), gnome_pixmap_new_from_file("web.png")); gtk_table_attach(GTK_TABLE(table), alignment, 0, 1, 0, 1, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Web page address:")), 1, 2, 0, 1, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_entry_new(), 2, 3, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0); return table; } static GtkWidget * _create_page_general_snailmail(EContactEditor *e_contact_editor) { GtkWidget *table; GtkWidget *alignment; GtkWidget *text; table = gtk_table_new(3, 3, FALSE); alignment = gtk_alignment_new(0,0,0,0); gtk_container_add(GTK_CONTAINER(alignment), gnome_pixmap_new_from_file("snailmail.png")); gtk_table_attach(GTK_TABLE(table), alignment, 0, 1, 0, 1, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Address:")), 1, 2, 0, 1, 0, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_label_new(_("Business:")), 1, 2, 1, 2, 0, 0, 0, 0); text = gtk_text_new(NULL, NULL); gtk_object_set(GTK_OBJECT(text), "editable", TRUE, NULL); gtk_table_attach(GTK_TABLE(table), text, 2, 3, 0, 2, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 0, 0); gtk_table_attach(GTK_TABLE(table), gtk_check_button_new_with_label(_("This is the mailing address")), 2, 3, 2, 3, 0, 0, 0, 0); return table; } static GtkWidget * _create_page_general_comments(EContactEditor *e_contact_editor) { GtkWidget *text; text = gtk_text_new(NULL, NULL); gtk_object_set (GTK_OBJECT(text), "editable", TRUE, NULL); return text; } static GtkWidget * _create_page_general_extras(EContactEditor *e_contact_editor) { return gtk_entry_new(); } static GtkWidget * _create_page_general( EContactEditor *e_contact_editor ) { GtkWidget *table; table = gtk_table_new(2, 5, FALSE); gtk_table_attach(GTK_TABLE(table), _create_page_general_name(e_contact_editor), 0, 1, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), _create_page_general_phone(e_contact_editor), 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), _create_page_general_email(e_contact_editor), 0, 1, 1, 2, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), _create_page_general_web(e_contact_editor), 0, 1, 2, 3, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), _create_page_general_snailmail(e_contact_editor), 1, 2, 1, 3, GTK_FILL | GTK_EXPAND, 0, 0, 0); gtk_table_attach(GTK_TABLE(table), _create_page_general_comments(e_contact_editor), 0, 2, 3, 4, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 0, 0); gtk_table_attach(GTK_TABLE(table), _create_page_general_extras(e_contact_editor), 0, 2, 4, 5, GTK_FILL | GTK_EXPAND, 0, 0, 0); return table; } static void e_contact_editor_init (EContactEditor *e_contact_editor) { GtkNotebook *notebook = GTK_NOTEBOOK (e_contact_editor); /* e_contact_editor->card = NULL;*/ e_contact_editor->fields = NULL; gtk_notebook_append_page (notebook, _create_page_general(e_contact_editor), gtk_label_new(_("General"))); } GtkWidget* e_contact_editor_new (void *card) { GtkWidget *widget = GTK_WIDGET (gtk_type_new (e_contact_editor_get_type ())); gtk_object_set (GTK_OBJECT(widget), "card", card, NULL); return widget; } static void e_contact_editor_set_arg (GtkObject *o, GtkArg *arg, guint arg_id) { EContactEditor *e_contact_editor; e_contact_editor = E_CONTACT_EDITOR (o); switch (arg_id){ case ARG_CARD: /* e_contact_editor->card = GTK_VALUE_POINTER (*arg); _update_card(e_contact_editor); gnome_canvas_item_request_update (item);*/ break; } } static void e_contact_editor_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) { EContactEditor *e_contact_editor; e_contact_editor = E_CONTACT_EDITOR (object); switch (arg_id) { case ARG_CARD: /* GTK_VALUE_POINTER (*arg) = e_contact_editor->card; */ break; default: arg->type = GTK_TYPE_INVALID; break; } }