BonoboControl * eab_vcard_control_new (void) { BonoboControl *control; BonoboPersistStream *stream; GtkWidget *display; GtkWidget *button1, *button2; GtkWidget *bbox; GtkWidget *vbox; EABVCardControl *vcard_control = g_new (EABVCardControl, 1); vcard_control->card_list = NULL; vcard_control->display = NULL; vcard_control->label = NULL; vcard_control->render_mode = EAB_CONTACT_DISPLAY_RENDER_COMPACT; /* Create the control. */ display = eab_contact_display_new (); vcard_control->display = EAB_CONTACT_DISPLAY (display); bbox = gtk_hbutton_box_new (); gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_START); gtk_box_set_spacing (GTK_BOX (bbox), 12); button1 = gtk_button_new_with_label(_("Show Full vCard")); g_signal_connect (button1, "clicked", G_CALLBACK (toggle_full_vcard), vcard_control); gtk_box_pack_start (GTK_BOX (bbox), button1, FALSE, FALSE, 0); button2 = gtk_button_new_with_label(_("Save in addressbook")); g_signal_connect (button2, "clicked", G_CALLBACK (save_in_addressbook), vcard_control); gtk_box_pack_start (GTK_BOX (bbox), button2, FALSE, FALSE, 0); /* This is intentionally not shown. */ vcard_control->label = gtk_label_new (""); vbox = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), display, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox), vcard_control->label, TRUE, TRUE, 0); gtk_widget_show_all (bbox); gtk_widget_show (display); gtk_widget_show (vbox); control = bonobo_control_new (vbox); g_object_weak_ref (G_OBJECT (control), free_struct, vcard_control); stream = bonobo_persist_stream_new (pstream_load, pstream_save, pstream_get_content_types, VCARD_CONTROL_ID, vcard_control); if (stream == NULL) { bonobo_object_unref (BONOBO_OBJECT (control)); return NULL; } bonobo_object_add_interface (BONOBO_OBJECT (control), BONOBO_OBJECT (stream)); return control; }
static void book_shell_content_constructed (GObject *object) { EBookShellContentPrivate *priv; EShellView *shell_view; EShellWindow *shell_window; EShellContent *shell_content; EShellTaskbar *shell_taskbar; GtkWidget *container; GtkWidget *widget; priv = E_BOOK_SHELL_CONTENT (object)->priv; /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (parent_class)->constructed (object); shell_content = E_SHELL_CONTENT (object); shell_view = e_shell_content_get_shell_view (shell_content); shell_window = e_shell_view_get_shell_window (shell_view); shell_taskbar = e_shell_view_get_shell_taskbar (shell_view); container = GTK_WIDGET (object); widget = e_paned_new (GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER (container), widget); priv->paned = g_object_ref (widget); gtk_widget_show (widget); g_object_bind_property ( object, "orientation", widget, "orientation", G_BINDING_SYNC_CREATE); container = widget; widget = gtk_notebook_new (); gtk_notebook_set_show_tabs (GTK_NOTEBOOK (widget), FALSE); gtk_notebook_set_show_border (GTK_NOTEBOOK (widget), FALSE); gtk_paned_pack1 (GTK_PANED (container), widget, TRUE, FALSE); priv->notebook = g_object_ref (widget); gtk_widget_show (widget); widget = eab_contact_display_new (); eab_contact_display_set_mode ( EAB_CONTACT_DISPLAY (widget), EAB_CONTACT_DISPLAY_RENDER_NORMAL); eab_contact_display_set_orientation ( EAB_CONTACT_DISPLAY (widget), priv->orientation); eab_contact_display_set_show_maps ( EAB_CONTACT_DISPLAY (widget), priv->preview_show_maps); g_object_bind_property ( object, "orientation", widget, "orientation", G_BINDING_SYNC_CREATE); g_object_bind_property ( object, "preview-show-maps", widget, "show-maps", G_BINDING_SYNC_CREATE); gtk_widget_show (widget); g_signal_connect_swapped ( widget, "send-message", G_CALLBACK (book_shell_content_send_message_cb), object); g_signal_connect_swapped ( widget, "status-message", G_CALLBACK (e_shell_taskbar_set_message), shell_taskbar); widget = e_preview_pane_new (E_WEB_VIEW (widget)); gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, FALSE); priv->preview_pane = g_object_ref (widget); gtk_widget_show (widget); g_object_bind_property ( object, "preview-visible", widget, "visible", G_BINDING_SYNC_CREATE); /* Restore pane positions from the last session once * the shell view is fully initialized and visible. */ g_signal_connect ( shell_window, "shell-view-created::addressbook", G_CALLBACK (book_shell_content_restore_state_cb), shell_content); }