aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authorRadek Doulik <rodo@ximian.com>2002-01-29 07:34:26 +0800
committerRadek Doulik <rodo@src.gnome.org>2002-01-29 07:34:26 +0800
commitd5f73b0fdd59bfe77705bd344cf8e9ec2e64f804 (patch)
treeff10ef0c1b641590061514ff654aea73ab388c47 /mail
parent6861836d29bcff5b60ad250da11b0a596a2adccb (diff)
downloadgsoc2013-evolution-d5f73b0fdd59bfe77705bd344cf8e9ec2e64f804.tar.gz
gsoc2013-evolution-d5f73b0fdd59bfe77705bd344cf8e9ec2e64f804.tar.zst
gsoc2013-evolution-d5f73b0fdd59bfe77705bd344cf8e9ec2e64f804.zip
print footer (footer_print_cb): print page number and number of pages
2002-01-28 Radek Doulik <rodo@ximian.com> * mail-callbacks.c (do_mail_print): print footer (footer_print_cb): print page number and number of pages svn path=/trunk/; revision=15499
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog5
-rw-r--r--mail/mail-callbacks.c46
2 files changed, 35 insertions, 16 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index c164337dba..a6b603bfad 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,8 @@
+2002-01-28 Radek Doulik <rodo@ximian.com>
+
+ * mail-callbacks.c (do_mail_print): print footer
+ (footer_print_cb): print page number and number of pages
+
2002-01-27 Ettore Perazzoli <ettore@ximian.com>
* importers/Makefile.am: Use IMPORTERS_CFLAGS.
diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c
index ded0116bbc..aaace95384 100644
--- a/mail/mail-callbacks.c
+++ b/mail/mail-callbacks.c
@@ -2413,29 +2413,40 @@ providers_config (BonoboUIComponent *uih, void *user_data, const char *path)
}
}
-#define HEADER_HEIGHT 1.1
-#define FOOTER_HEIGHT 1.1
-
static void
header_print_cb (GtkHTML *html, GnomePrintContext *print_context,
double x, double y, double width, double height, gpointer user_data)
{
-#if 0
- gnome_print_setlinewidth (print_context, 12);
- gnome_print_setrgbcolor (print_context, 1.0, 0.0, 0.0);
+ /* printf ("header_print_cb %f,%f x %f,%f\n", x, y, width, height);
gnome_print_newpath (print_context);
+ gnome_print_setlinewidth (print_context, 12.0);
+ gnome_print_setrgbcolor (print_context, 1.0, 0.0, 0.0);
gnome_print_moveto (print_context, x, y);
- gnome_print_lineto (print_context, x+width, y+height);
- gnome_print_strokepath (print_context);
-#endif
+ gnome_print_lineto (print_context, x+width, y-height);
+ gnome_print_strokepath (print_context); */
}
+static GnomeFont *local_font;
+static gint page_num, pages;
+
static void
footer_print_cb (GtkHTML *html, GnomePrintContext *print_context,
double x, double y, double width, double height, gpointer user_data)
{
+ if (local_font) {
+ gchar *text = g_strdup_printf (_("Page %d of %d"), page_num, pages);
+ gdouble tw = gnome_font_get_width_string (local_font, text);
+
+ gnome_print_newpath (print_context);
+ gnome_print_setrgbcolor (print_context, .0, .0, .0);
+ gnome_print_moveto (print_context, x + width - tw, y - gnome_font_get_ascender (local_font));
+ gnome_print_setfont (print_context, local_font);
+ gnome_print_show (print_context, text);
+ g_free (text);
+ page_num++;
+ }
}
static void
@@ -2446,6 +2457,7 @@ do_mail_print (FolderBrowser *fb, gboolean preview)
GnomePrintMaster *print_master;
GnomePrintDialog *dialog;
GnomePrinter *printer = NULL;
+ gdouble line;
int copies = 1;
int collate = FALSE;
@@ -2492,13 +2504,15 @@ do_mail_print (FolderBrowser *fb, gboolean preview)
mail_display_render (fb->mail_display, html);
gtk_html_print_set_master (html, print_master);
-#if 0
- gtk_html_print_with_header_footer (html, print_context,
- HEADER_HEIGHT, FOOTER_HEIGHT,
- header_print_cb, footer_print_cb,
- NULL);
-#endif
- gtk_html_print (html, print_context);
+ if (!local_font) {
+ local_font = gnome_font_new_closest ("Helvetica", GNOME_FONT_BOOK, FALSE, 10);
+ }
+ if (local_font) {
+ line = gnome_font_get_ascender (local_font) + gnome_font_get_descender (local_font);
+ }
+ page_num = 1;
+ pages = gtk_html_print_get_pages_num (html, print_context, 0.0, line);
+ gtk_html_print_with_header_footer (html, print_context, 0.0, line, NULL, footer_print_cb, NULL);
fb->mail_display->printing = FALSE;