From 84adebbb963fc2e458018475a8e377873e254062 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Fri, 21 Sep 2001 22:08:13 +0000 Subject: Hooked up print preview button. 2001-09-21 Christopher James Lahey * gui/component/addressbook.c (print_preview_cb): Hooked up print preview button. * gui/widgets/e-addressbook-view.c, gui/widgets/e-addressbook-view.h (e_addressbook_view_print_preview): Added this function. * printing/e-contact-print.c, printing/e-contact-print.h (e_contact_print_preview): Added this function. svn path=/trunk/; revision=13071 --- addressbook/gui/component/addressbook.c | 14 ++++++++ addressbook/gui/widgets/e-addressbook-view.c | 51 +++++++++++++++++++++++++++- addressbook/gui/widgets/e-addressbook-view.h | 1 + 3 files changed, 65 insertions(+), 1 deletion(-) (limited to 'addressbook/gui') diff --git a/addressbook/gui/component/addressbook.c b/addressbook/gui/component/addressbook.c index cd5ba138a8..028a866909 100644 --- a/addressbook/gui/component/addressbook.c +++ b/addressbook/gui/component/addressbook.c @@ -129,6 +129,13 @@ print_cb (BonoboUIComponent *uih, void *user_data, const char *path) e_addressbook_view_print(view->view); } +static void +print_preview_cb (BonoboUIComponent *uih, void *user_data, const char *path) +{ + AddressbookView *view = (AddressbookView *) user_data; + e_addressbook_view_print_preview(view->view); +} + static void stop_loading_cb (BonoboUIComponent *uih, void *user_data, const char *path) { @@ -204,6 +211,12 @@ update_command_state (EAddressbookView *eav, AddressbookView *view) "sensitive", e_addressbook_view_can_print (view->view) ? "1" : "0", NULL); + /* Print Contact */ + bonobo_ui_component_set_prop (uic, + "/commands/ContactsPrintPreview", + "sensitive", + e_addressbook_view_can_print (view->view) ? "1" : "0", NULL); + /* Delete Contact */ bonobo_ui_component_set_prop (uic, "/commands/ContactDelete", @@ -253,6 +266,7 @@ change_view_type (AddressbookView *view, EAddressbookViewType view_type) static BonoboUIVerb verbs [] = { BONOBO_UI_UNSAFE_VERB ("ContactsPrint", print_cb), + BONOBO_UI_UNSAFE_VERB ("ContactsPrintPreview", print_preview_cb), BONOBO_UI_UNSAFE_VERB ("ContactsSaveAsVCard", save_contact_cb), BONOBO_UI_UNSAFE_VERB ("ToolSearch", search_cb), diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 50ae8d2d0e..095f1dbf48 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -1200,7 +1200,6 @@ get_selection_model (EAddressbookView *view) return E_SELECTION_MODEL(E_TABLE_SCROLLED(view->widget)->table->selection); } - void e_addressbook_view_print(EAddressbookView *view) { @@ -1241,6 +1240,56 @@ e_addressbook_view_print(EAddressbookView *view) } } +void +e_addressbook_view_print_preview(EAddressbookView *view) +{ + if (view->view_type == E_ADDRESSBOOK_VIEW_MINICARD) { + char *query; + EBook *book; + + gtk_object_get (GTK_OBJECT(view->model), + "query", &query, + "book", &book, + NULL); + e_contact_print_preview(book, query); + g_free(query); + } else if (view->view_type == E_ADDRESSBOOK_VIEW_TABLE) { + EPrintable *printable; + ETable *etable; + GnomePrintMaster *master; + GnomePrintContext *pc; + GtkWidget *preview; + + gtk_object_get(GTK_OBJECT(view->widget), "table", &etable, NULL); + printable = e_table_get_printable(etable); + + master = gnome_print_master_new(); + gnome_print_master_set_copies (master, 1, FALSE); + pc = gnome_print_master_get_context( master ); + e_printable_reset(printable); + while (e_printable_data_left(printable)) { + if (gnome_print_gsave(pc) == -1) + /* FIXME */; + if (gnome_print_translate(pc, 72, 72) == -1) + /* FIXME */; + e_printable_print_page(printable, + pc, + 6.5 * 72, + 9 * 72, + TRUE); + if (gnome_print_grestore(pc) == -1) + /* FIXME */; + if (gnome_print_showpage(pc) == -1) + /* FIXME */; + } + gnome_print_master_close(master); + preview = GTK_WIDGET(gnome_print_master_preview_new(master, "Print Preview")); + gtk_widget_show_all(preview); + gtk_object_unref(GTK_OBJECT(master)); + gtk_object_unref(GTK_OBJECT(printable)); + } +} + static void card_deleted_cb (EBook* book, EBookStatus status, gpointer user_data) { diff --git a/addressbook/gui/widgets/e-addressbook-view.h b/addressbook/gui/widgets/e-addressbook-view.h index 621f26bb2a..c2fe0588b4 100644 --- a/addressbook/gui/widgets/e-addressbook-view.h +++ b/addressbook/gui/widgets/e-addressbook-view.h @@ -106,6 +106,7 @@ void e_addressbook_view_save_as (EAddressbookView *view); void e_addressbook_view_send (EAddressbookView *view); void e_addressbook_view_send_to (EAddressbookView *view); void e_addressbook_view_print (EAddressbookView *view); +void e_addressbook_view_print_preview (EAddressbookView *view); void e_addressbook_view_delete_selection (EAddressbookView *view); void e_addressbook_view_cut (EAddressbookView *view); void e_addressbook_view_copy (EAddressbookView *view); -- cgit