From 8ab34219361284ed90033fdfb2c425ef804e1cc7 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Thu, 20 Jul 2000 20:59:36 +0000 Subject: Fixed the oaf info. 2000-07-20 Christopher James Lahey * gui/component/addressbook.oafinfo: Fixed the oaf info. * gui/minicard/.cvsignore, gui/minicard/Makefile.am, gui/minicard/e-minicard-widget-test.c: Added a test for the minicard widget. * gui/minicard/e-minicard-control.c: Fixed the mime type. * gui/minicard/e-minicard.c: Fixed some crashes if your parent isn't a minicard view. * gui/minicard/e-minicard-control.oafinfo: Removed. svn path=/trunk/; revision=4249 --- addressbook/gui/widgets/Makefile.am | 20 ++++ addressbook/gui/widgets/e-minicard-control.c | 8 +- addressbook/gui/widgets/e-minicard-widget-test.c | 115 +++++++++++++++++++++++ addressbook/gui/widgets/e-minicard.c | 93 ++++++++++-------- 4 files changed, 194 insertions(+), 42 deletions(-) create mode 100644 addressbook/gui/widgets/e-minicard-widget-test.c (limited to 'addressbook/gui/widgets') diff --git a/addressbook/gui/widgets/Makefile.am b/addressbook/gui/widgets/Makefile.am index 1a288fa088..b337754531 100644 --- a/addressbook/gui/widgets/Makefile.am +++ b/addressbook/gui/widgets/Makefile.am @@ -28,6 +28,7 @@ libeminicard_a_SOURCES = \ e-reflow.h noinst_PROGRAMS = \ + minicard-widget-test \ minicard-label-test \ minicard-test \ reflow-test \ @@ -100,3 +101,22 @@ minicard_view_test_LDADD = \ $(top_builddir)/widgets/misc/libemiscwidgets.a \ $(top_builddir)/e-util/libeutil.la \ $(top_builddir)/widgets/e-text/libetext.a + +minicard_widget_test_SOURCES = \ + e-minicard-widget-test.c + +minicard_widget_test_LDADD = \ + $(EXTRA_GNOME_LIBS) \ + $(GNOMEGNORBA_LIBS) \ + $(BONOBO_GNOME_LIBS) \ + libeminicard.a \ + $(top_builddir)/addressbook/backend/ebook/libebook.la \ + $(top_builddir)/e-util/libeutil.la \ + $(top_builddir)/libversit/libversit.la \ + $(top_builddir)/addressbook/ename/libename.la \ + $(top_builddir)/addressbook/contact-editor/libecontacteditor.a \ + $(top_builddir)/addressbook/printing/libecontactprint.a \ + $(top_builddir)/widgets/e-table/libetable.a \ + $(top_builddir)/widgets/misc/libemiscwidgets.a \ + $(top_builddir)/e-util/libeutil.la \ + $(top_builddir)/widgets/e-text/libetext.a diff --git a/addressbook/gui/widgets/e-minicard-control.c b/addressbook/gui/widgets/e-minicard-control.c index 3cda9b4ead..ab8aedff96 100644 --- a/addressbook/gui/widgets/e-minicard-control.c +++ b/addressbook/gui/widgets/e-minicard-control.c @@ -139,8 +139,7 @@ pstream_load (BonoboPersistStream *ps, const Bonobo_Stream stream, char *vcard; GtkWidget *minicard = data; - if (*type && g_strcasecmp (type, "text/plain") != 0 && - g_strcasecmp (type, "text/vCard") != 0 && + if (*type && g_strcasecmp (type, "text/vCard") != 0 && g_strcasecmp (type, "text/x-vCard") != 0) { CORBA_exception_set (ev, CORBA_USER_EXCEPTION, ex_Bonobo_Persist_WrongDataType, NULL); @@ -176,8 +175,7 @@ pstream_save (BonoboPersistStream *ps, const Bonobo_Stream stream, EMinicardWidget *minicard = data; int length; - if (*type && g_strcasecmp (type, "text/plain") != 0 && - g_strcasecmp (type, "text/vCard") != 0 && + if (*type && g_strcasecmp (type, "text/vCard") != 0 && g_strcasecmp (type, "text/x-vCard") != 0) { CORBA_exception_set (ev, CORBA_USER_EXCEPTION, ex_Bonobo_Persist_WrongDataType, NULL); @@ -242,7 +240,7 @@ static Bonobo_Persist_ContentTypeList * pstream_get_content_types (BonoboPersistStream *ps, void *closure, CORBA_Environment *ev) { - return bonobo_persist_generate_content_types (3, "text/plain", "text/vCard", "text/x-vCard"); + return bonobo_persist_generate_content_types (2, "text/vCard", "text/x-vCard"); } static BonoboObject * diff --git a/addressbook/gui/widgets/e-minicard-widget-test.c b/addressbook/gui/widgets/e-minicard-widget-test.c new file mode 100644 index 0000000000..cbdd2f69b6 --- /dev/null +++ b/addressbook/gui/widgets/e-minicard-widget-test.c @@ -0,0 +1,115 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* test-minicard.c + * + * Copyright (C) 2000 Helix Code, Inc. + * Author: Chris Lahey + * + * 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, 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. + */ + +#define TEST_VCARD \ +"BEGIN:VCARD +" \ +"FN:Nat +" \ +"N:Friedman;Nat;D;Mr. +" \ +"ORG:Helix Code, Inc. +" \ +"TITLE:Head Geek +" \ +"ROLE:Programmer/Executive +" \ +"BDAY:1977-08-06 +" \ +"TEL;WORK:617 679 1984 +" \ +"TEL;CELL:123 456 7890 +" \ +"EMAIL;INTERNET:nat@nat.org +" \ +"EMAIL;INTERNET:nat@helixcode.com +" \ +"ADR;WORK;POSTAL:P.O. Box 101;;;Any Town;CA;91921-1234; +" \ +"ADR;HOME;POSTAL;INTL:P.O. Box 202;;;Any Town 2;MI;12344-4321;USA +" \ +"END:VCARD +" \ +" +" + +#include "config.h" + +#include +#include "e-minicard-widget.h" + +/* This is a horrible thing to do, but it is just a test. */ + +static void destroy_callback(GtkWidget *app, gpointer data) +{ + exit(0); +} + +#if 0 +static void about_callback( GtkWidget *widget, gpointer data ) +{ + + const gchar *authors[] = + { + "Christopher James Lahey ", + NULL + }; + + GtkWidget *about = + gnome_about_new ( _( "Minicard Widget Test" ), VERSION, + _( "Copyright (C) 2000, Helix Code, Inc." ), + authors, + _( "This should test the minicard widget" ), + NULL); + gtk_widget_show (about); +} +#endif + +int main( int argc, char *argv[] ) +{ + GtkWidget *app; + GtkWidget *minicard; + int i; + ECard *card; + char *vcard; + + /* bindtextdomain (PACKAGE, GNOMELOCALEDIR); + textdomain (PACKAGE);*/ + + gnome_init( "Minicard Widget Test", VERSION, argc, argv); + app = gnome_app_new("Minicard Widget Test", NULL); + + minicard = e_minicard_widget_new(); + card = e_card_new(TEST_VCARD); + gtk_object_set(GTK_OBJECT(minicard), + "card", card, + NULL); + + gnome_app_set_contents( GNOME_APP( app ), minicard ); + + /* Connect the signals */ + gtk_signal_connect( GTK_OBJECT( app ), "destroy", + GTK_SIGNAL_FUNC( destroy_callback ), + ( gpointer ) app ); + + gtk_widget_show_all( app ); + + gtk_main(); + + /* Not reached. */ + return 0; +} diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c index 68f6ccfc05..2fa1d3c080 100644 --- a/addressbook/gui/widgets/e-minicard.c +++ b/addressbook/gui/widgets/e-minicard.c @@ -418,20 +418,30 @@ e_minicard_event (GnomeCanvasItem *item, GdkEvent *event) NULL ); e_minicard->has_focus = TRUE; } else { - EBook *book; + EBook *book = NULL; e_card_simple_sync_card(e_minicard->simple); + + if (E_IS_MINICARD_VIEW(GNOME_CANVAS_ITEM(e_minicard)->parent)) { + + gtk_object_get(GTK_OBJECT(GNOME_CANVAS_ITEM(e_minicard)->parent), + "book", &book, + NULL); + + } - gtk_object_get(GTK_OBJECT(GNOME_CANVAS_ITEM(e_minicard)->parent), - "book", &book, - NULL); - + if (book) { + /* Add the card in the contact editor to our ebook */ - e_book_commit_card (book, - e_minicard->card, - card_changed_cb, - NULL); - + e_book_commit_card (book, + e_minicard->card, + card_changed_cb, + NULL); + } else { + remodel(e_minicard); + e_canvas_item_request_reflow(GNOME_CANVAS_ITEM(e_minicard)); + } + gnome_canvas_item_set( e_minicard->rect, "outline_color", NULL, NULL ); @@ -449,35 +459,44 @@ e_minicard_event (GnomeCanvasItem *item, GdkEvent *event) if (event->button.button == 1) { e_canvas_item_grab_focus(item); } else if (event->button.button == 3) { - EPopupMenu menu[] = { {"Save as VCard", NULL, GTK_SIGNAL_FUNC(save_as), 0}, - {"Print", NULL, GTK_SIGNAL_FUNC(print), 0}, - {"Delete", NULL, GTK_SIGNAL_FUNC(delete), 0}, - {NULL, NULL, NULL, 0}}; - e_popup_menu_run (menu, (GdkEventButton *)event, 0, e_minicard); + if (E_IS_MINICARD_VIEW(item->parent)) { + EPopupMenu menu[] = { {"Save as VCard", NULL, GTK_SIGNAL_FUNC(save_as), 0}, + {"Print", NULL, GTK_SIGNAL_FUNC(print), 0}, + {"Delete", NULL, GTK_SIGNAL_FUNC(delete), 0}, + {NULL, NULL, NULL, 0}}; + e_popup_menu_run (menu, (GdkEventButton *)event, 0, e_minicard); + } else { + EPopupMenu menu[] = { {"Save as VCard", NULL, GTK_SIGNAL_FUNC(save_as), 0}, + {"Print", NULL, GTK_SIGNAL_FUNC(print), 0}, + {NULL, NULL, NULL, 0}}; + e_popup_menu_run (menu, (GdkEventButton *)event, 0, e_minicard); + } } break; case GDK_2BUTTON_PRESS: if (event->button.button == 1 && E_IS_MINICARD_VIEW(item->parent)) { EContactEditor *ce; - EBook *book; - - gtk_object_get(GTK_OBJECT(item->parent), - "book", &book, - NULL); - g_assert (E_IS_BOOK (book)); - + EBook *book = NULL; + if (E_IS_MINICARD_VIEW(item->parent)) { + + gtk_object_get(GTK_OBJECT(item->parent), + "book", &book, + NULL); + } ce = e_contact_editor_new (e_minicard->card, FALSE); - gtk_signal_connect (GTK_OBJECT (ce), "add_card", - GTK_SIGNAL_FUNC (add_card_cb), book); - gtk_signal_connect (GTK_OBJECT (ce), "commit_card", - GTK_SIGNAL_FUNC (commit_card_cb), book); - gtk_signal_connect (GTK_OBJECT (ce), "delete_card", - GTK_SIGNAL_FUNC (delete_card_cb), book); + if (book != NULL) { + gtk_signal_connect (GTK_OBJECT (ce), "add_card", + GTK_SIGNAL_FUNC (add_card_cb), book); + gtk_signal_connect (GTK_OBJECT (ce), "commit_card", + GTK_SIGNAL_FUNC (commit_card_cb), book); + gtk_signal_connect (GTK_OBJECT (ce), "delete_card", + GTK_SIGNAL_FUNC (delete_card_cb), book); + } + gtk_signal_connect (GTK_OBJECT (ce), "editor_closed", GTK_SIGNAL_FUNC (editor_closed_cb), NULL); - return TRUE; } break; @@ -524,17 +543,17 @@ e_minicard_event (GnomeCanvasItem *item, GdkEvent *event) static void e_minicard_resize_children( EMinicard *e_minicard ) { - if ( GTK_OBJECT_FLAGS( e_minicard ) & GNOME_CANVAS_ITEM_REALIZED ) { - GList *list; - + GList *list; + + if (e_minicard->header_text) { gnome_canvas_item_set( e_minicard->header_text, "width", (double) e_minicard->width - 12, NULL ); - for ( list = e_minicard->fields; list; list = g_list_next( list ) ) { - gnome_canvas_item_set( E_MINICARD_FIELD( list->data )->label, - "width", (double) e_minicard->width - 4.0, - NULL ); - } + } + for ( list = e_minicard->fields; list; list = g_list_next( list ) ) { + gnome_canvas_item_set( E_MINICARD_FIELD( list->data )->label, + "width", (double) e_minicard->width - 4.0, + NULL ); } } -- cgit