? src/doc_info.xpm ? src/new.diff ? src/rotate_left.xpm ? src/rotate_right.xpm Index: src/poppler_viewer.c =================================================================== RCS file: /pack/anoncvs/sylpheedclaws/plugins/pdf_viewer/src/Attic/poppler_viewer.c,v retrieving revision 1.1.2.5 diff -u -p -r1.1.2.5 poppler_viewer.c --- src/poppler_viewer.c 2007/02/27 10:09:00 1.1.2.5 +++ src/poppler_viewer.c 2007/03/01 20:53:25 @@ -2,7 +2,7 @@ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client * Copyright (C) 1999-2007 the Claws Mail Team * This file Copyright (C) 2007 Salvatore De Paolis - * <> + * * * 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 @@ -46,6 +46,7 @@ #include "defs.h" #include "noticeview.h" #include "gtkutils.h" +#include "alertpanel.h" #include "left_arrow.xpm" #include "right_arrow.xpm" @@ -53,14 +54,21 @@ #include "zoom_in.xpm" #include "zoom_out.xpm" #include "zoom_width.xpm" +#include "rotate_right.xpm" +#include "rotate_left.xpm" +#include "doc_info.xpm" #ifdef USE_PTHREAD #include #endif #define ZOOM_FACTOR 0.3 +#define ROTATION 90 + static void poppler_pdf_view_update(MimeViewer *_viewer, gboolean reload_file, int page_num); + gchar *msg; + struct _PopplerViewer { MimeViewer mimeviewer; @@ -75,20 +83,28 @@ struct _PopplerViewer GtkWidget *doc_label; GtkWidget *cur_page; GtkWidget *num_pages; + /* begin GtkButtons */ GtkWidget *prev; GtkWidget *next; GtkWidget *zoom_in; GtkWidget *zoom_out; GtkWidget *zoom_fit; GtkWidget *zoom_width; + GtkWidget *rotate_left; + GtkWidget *rotate_right; + GtkWidget *doc_info; + /* end GtkButtons */ + GtkTable *table_doc_info; GtkWidget *hbox; GtkTooltips *button_bar_tips; PopplerDocument *pdf_doc; PopplerPage *pdf_page; gchar *filename; gchar *fsname; + gchar *doc_info_text; gint cur_page_int; gint num_pages_int; + gint rotate; double zoom; double width; double height; @@ -109,7 +125,6 @@ static MimeViewerFactory poppler_viewer_ static GtkWidget *poppler_get_widget(MimeViewer *_viewer) { PopplerViewer *viewer = (PopplerViewer *) _viewer; - debug_print("poppler_get_widget: %p\n", viewer->vbox); return GTK_WIDGET(viewer->vbox); @@ -125,12 +140,10 @@ static void poppler_next_page_cb(GtkButt { if (viewer->cur_page_int < viewer->num_pages_int) poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int + 1); - } static void poppler_zoom_in_cb(GtkButton *button, PopplerViewer *viewer) { - if (viewer->zoom < 4) { viewer->zoom += ZOOM_FACTOR; poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int); @@ -139,7 +152,6 @@ static void poppler_zoom_in_cb(GtkButton static void poppler_zoom_out_cb(GtkButton *button, PopplerViewer *viewer) { - if (viewer->zoom > 0.3) { viewer->zoom -= ZOOM_FACTOR; poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int); @@ -155,6 +167,7 @@ static void poppler_zoom_fit_cb(GtkButto debug_print("height: %d\n", allocation->height); xratio = allocation->width / viewer->width; yratio = allocation->height / viewer->height; + if (xratio >= yratio) viewer->zoom = yratio; else @@ -173,6 +186,208 @@ static void poppler_zoom_width_cb(GtkBut poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int); } +static void poppler_rotate_right_cb(GtkButton *button, PopplerViewer *viewer) +{ + if (viewer->rotate == 360) + viewer->rotate = 0; + + viewer->rotate += (gint) ROTATION; + poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int); +} + +static void poppler_rotate_left_cb(GtkButton *button, PopplerViewer *viewer) +{ + if (viewer->rotate == 0) + viewer->rotate = 360; + + viewer->rotate = abs(viewer->rotate - (gint) ROTATION); + poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int); +} + +static char * poppler_get_document_info_mode(PopplerPageMode mode) +{ + GEnumValue *enum_value; + + enum_value = g_enum_get_value((GEnumClass *) g_type_class_peek (POPPLER_TYPE_PAGE_MODE), mode); + return (gchar *) enum_value->value_name; +} +static char * poppler_get_document_info_layout(PopplerPageLayout layout) +{ + + GEnumValue *enum_value; + + enum_value = g_enum_get_value((GEnumClass *) g_type_class_peek (POPPLER_TYPE_PAGE_LAYOUT), layout); + return (gchar *) enum_value->value_name; +} +static char * poppler_get_document_format_data(GTime utime) +{ + time_t time = (time_t) utime; + struct tm t; + char s[256]; + const char *fmt_hack = "%c"; + size_t len; + + if (time == 0 || !localtime_r (&time, &t)) return NULL; + + len = strftime (s, sizeof (s), fmt_hack, &t); + if (len == 0 || s[0] == '\0') return NULL; + + return g_locale_to_utf8 (s, -1, NULL, NULL, NULL); +} + +static GtkTable * poppler_fill_info_table(PopplerViewer *viewer) +{ + GtkWidget *label; + gchar *title, *format, *author, *subject, *keywords, *creator, *producer, *linearized, *tmp; + + GTime creation_date, mod_date; + + PopplerPageLayout layout; + PopplerPageMode mode; + PopplerPermissions permissions; + PopplerViewerPreferences view_prefs; + + g_object_get (viewer->pdf_doc, + "title", &title, + "format", &format, + "author", &author, + "subject", &subject, + "keywords", &keywords, + "creation-date", &creation_date, + "permissions", &permissions, + "mod-date", &mod_date, + "creator", &creator, + "producer", &producer, + "linearized", &linearized, + "page-mode", &mode, + "page-layout", &layout, + "viewer-preferences", &view_prefs, + NULL); + + viewer->table_doc_info = GTK_TABLE(gtk_table_new(12, 2, FALSE)); + + label = gtk_label_new(_("Title: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(title); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Subject: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(subject); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Author: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(author); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Keywords: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(keywords); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 3, 4, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Creator: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 4, 5, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(creator); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 4, 5, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Producer: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 5, 6, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(producer); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 5, 6, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Created: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 6, 7, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + tmp = poppler_get_document_format_data(creation_date); + label = gtk_label_new(tmp); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 6, 7, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Modified: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 7, 8, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + tmp = poppler_get_document_format_data(mod_date); + label = gtk_label_new(tmp); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 7, 8, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Format: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 8, 9, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(format); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 8, 9, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Optimized: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 9, 10, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(linearized); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 9, 10, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Page Mode: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 10, 11, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + tmp = poppler_get_document_info_mode(mode); + label = gtk_label_new(tmp); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 10, 11, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + label = gtk_label_new(_("Page Layout: ")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 1, 11, 12, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + tmp = poppler_get_document_info_layout(layout); + label = gtk_label_new(tmp); + gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); + gtk_table_attach(viewer->table_doc_info, label, 0, 2, 11, 12, GTK_EXPAND | GTK_FILL, 0, 0, 0); + + g_free(title); + g_free(format); + g_free(author); + g_free(subject); + g_free(keywords); + g_free(creator); + g_free(producer); + g_free(linearized); + + return (GtkTable *) viewer->table_doc_info; +} + +static void poppler_document_info_cb(GtkButton *button, PopplerViewer *viewer) +{ + gchar *buf; + buf = g_strdup_printf(_("PDF Viewer Plugin")); + + alertpanel_full(buf, NULL, GTK_STOCK_CLOSE, NULL, NULL, + FALSE, (GtkWidget *) poppler_fill_info_table(viewer), ALERT_NOTICE, G_ALERTDEFAULT); + g_free(buf); +} + static gboolean entry_current_page_cb(GtkEntry *entry, GdkEventKey *event, PopplerViewer *viewer) { char *endptr; @@ -266,6 +481,9 @@ static void poppler_show_controls(Popple gtk_widget_show(viewer->zoom_width); gtk_widget_show(viewer->vsep); gtk_widget_show(viewer->vsep1); + gtk_widget_show(viewer->rotate_right); + gtk_widget_show(viewer->rotate_left); + gtk_widget_show(viewer->doc_info); } else { gtk_widget_hide(viewer->cur_page); gtk_widget_hide(viewer->num_pages); @@ -277,6 +495,9 @@ static void poppler_show_controls(Popple gtk_widget_hide(viewer->zoom_width); gtk_widget_hide(viewer->vsep); gtk_widget_hide(viewer->vsep1); + gtk_widget_hide(viewer->rotate_right); + gtk_widget_hide(viewer->rotate_left); + gtk_widget_hide(viewer->doc_info); } } @@ -302,17 +523,26 @@ static void poppler_pdf_view_update(Mime } if (poppler_mimepart_get_type(viewer->to_load) == TYPE_PS) { - stock_pixmap_gdk(viewer->hbox, STOCK_PIXMAP_MIME_PS, &viewer->icon_pixmap, &viewer->icon_bitmap); + stock_pixmap_gdk(viewer->hbox, + STOCK_PIXMAP_MIME_PS, + &viewer->icon_pixmap, + &viewer->icon_bitmap); gtk_image_set_from_pixmap(GTK_IMAGE(viewer->icon_type), viewer->icon_pixmap, viewer->icon_bitmap); } else if (poppler_mimepart_get_type(viewer->to_load) == TYPE_PDF) { - stock_pixmap_gdk(viewer->hbox, STOCK_PIXMAP_MIME_PDF, &viewer->icon_pixmap, &viewer->icon_bitmap); + stock_pixmap_gdk(viewer->hbox, + STOCK_PIXMAP_MIME_PDF, + &viewer->icon_pixmap, + &viewer->icon_bitmap); gtk_image_set_from_pixmap(GTK_IMAGE(viewer->icon_type), viewer->icon_pixmap, viewer->icon_bitmap); } else { - stock_pixmap_gdk(viewer->hbox, STOCK_PIXMAP_MIME_APPLICATION, &viewer->icon_pixmap, &viewer->icon_bitmap); + stock_pixmap_gdk(viewer->hbox, + STOCK_PIXMAP_MIME_APPLICATION, + &viewer->icon_pixmap, + &viewer->icon_bitmap); gtk_image_set_from_pixmap(GTK_IMAGE(viewer->icon_type), viewer->icon_pixmap, viewer->icon_bitmap); } - gtk_label_set_text(GTK_LABEL(viewer->doc_label), "Loading..."); + gtk_label_set_text(GTK_LABEL(viewer->doc_label), _("Loading...")); poppler_show_controls(viewer, FALSE); GTK_EVENTS_FLUSH(); @@ -347,7 +577,12 @@ static void poppler_pdf_view_update(Mime } if (viewer->pdf_doc == NULL) { strretchomp(error->message); - stock_pixmap_gdk(viewer->hbox, STOCK_PIXMAP_MIME_APPLICATION, &viewer->icon_pixmap, &viewer->icon_bitmap); + + stock_pixmap_gdk(viewer->hbox, + STOCK_PIXMAP_MIME_APPLICATION, + &viewer->icon_pixmap, + &viewer->icon_bitmap); + gtk_image_set_from_pixmap(GTK_IMAGE(viewer->icon_type), viewer->icon_pixmap, viewer->icon_bitmap); gtk_label_set_text(GTK_LABEL(viewer->doc_label), error->message); g_error_free(error); @@ -366,14 +601,28 @@ static void poppler_pdf_view_update(Mime } gtk_entry_set_text(GTK_ENTRY(viewer->cur_page), g_strdup_printf("%d",page_num)); - - poppler_page_get_size(viewer->pdf_page, &viewer->width, &viewer->height); - - pb = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, (int)(viewer->width * viewer->zoom), (int)(viewer->height * viewer->zoom)); - poppler_page_render_to_pixbuf (viewer->pdf_page, 0, 0, - (int)(viewer->width * viewer->zoom), (int)(viewer->height * viewer->zoom), viewer->zoom, 0, pb); - gtk_image_set_from_pixbuf(GTK_IMAGE(viewer->pdf_view), - pb); + if(viewer->rotate == 90 || viewer->rotate == 270) { + poppler_page_get_size(viewer->pdf_page, &viewer->height, &viewer->width); + } + else { + poppler_page_get_size(viewer->pdf_page, &viewer->width, &viewer->height); + } + + pb = gdk_pixbuf_new (GDK_COLORSPACE_RGB, + FALSE, 8, + (int)(viewer->width * viewer->zoom), + (int)(viewer->height * viewer->zoom)); + + poppler_page_render_to_pixbuf (viewer->pdf_page, + 0, + 0, + (int)(viewer->width * viewer->zoom), + (int)(viewer->height * viewer->zoom), + viewer->zoom, + viewer->rotate, + pb); + + gtk_image_set_from_pixbuf(GTK_IMAGE(viewer->pdf_view), pb); g_object_unref(G_OBJECT(pb)); g_object_unref(G_OBJECT(viewer->pdf_page)); @@ -436,6 +685,7 @@ static void poppler_show_mimepart(MimeVi { PopplerViewer *viewer = (PopplerViewer *) _viewer; viewer->zoom = 1.0; + viewer->rotate = 0; viewer->to_load = partinfo; gtk_timeout_add(5, (GtkFunction)poppler_show_mimepart_real, viewer); @@ -583,7 +833,21 @@ static MimeViewer *poppler_viewer_create gtk_widget_set_size_request(viewer->zoom_width, -1, -1); button_set_pixmap(viewer->zoom_width, zoom_width_xpm); + viewer->rotate_left = gtk_button_new(); + gtk_widget_set_size_request(viewer->rotate_left, -1, -1); + button_set_pixmap(viewer->rotate_left, rotate_left_xpm); + + viewer->rotate_right = gtk_button_new(); + gtk_widget_set_size_request(viewer->rotate_right, -1, -1); + button_set_pixmap(viewer->rotate_right, rotate_right_xpm); + + viewer->doc_info = gtk_button_new(); + gtk_widget_set_size_request(viewer->doc_info, -1, -1); + button_set_pixmap(viewer->doc_info, doc_info_xpm); + viewer->num_pages = gtk_label_new(""); + + gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(viewer->scrollwin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); @@ -604,7 +868,10 @@ static MimeViewer *poppler_viewer_create gtk_widget_show(viewer->hbox); - stock_pixmap_gdk(viewer->hbox, STOCK_PIXMAP_MIME_TEXT_PLAIN, &viewer->icon_pixmap, &viewer->icon_bitmap); + stock_pixmap_gdk(viewer->hbox, + STOCK_PIXMAP_MIME_TEXT_PLAIN, + &viewer->icon_pixmap, + &viewer->icon_bitmap); gtk_image_set_from_pixmap(GTK_IMAGE(viewer->icon_type), viewer->icon_pixmap, viewer->icon_bitmap); gtk_box_pack_start(GTK_BOX(viewer->hbox), viewer->icon_type, FALSE, FALSE, 0); @@ -623,6 +890,10 @@ static MimeViewer *poppler_viewer_create gtk_box_pack_start(GTK_BOX(viewer->hbox), viewer->zoom_fit, FALSE, FALSE, 1); gtk_box_pack_start(GTK_BOX(viewer->hbox), viewer->zoom_width, FALSE, FALSE, 1); + gtk_box_pack_start(GTK_BOX(viewer->hbox), viewer->rotate_left, FALSE, FALSE, 1); + gtk_box_pack_start(GTK_BOX(viewer->hbox), viewer->rotate_right, FALSE, FALSE, 1); + + gtk_box_pack_start(GTK_BOX(viewer->hbox), viewer->doc_info, FALSE, FALSE, 1); gtk_box_pack_start(GTK_BOX(viewer->vbox), viewer->hbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(viewer->vbox), viewer->scrollwin, TRUE, TRUE, 0); @@ -657,6 +928,12 @@ static MimeViewer *poppler_viewer_create gtk_widget_show(GTK_WIDGET(viewer->zoom_width)); gtk_widget_ref(GTK_WIDGET(viewer->zoom_width)); + gtk_widget_show(GTK_WIDGET(viewer->rotate_right)); + gtk_widget_ref(GTK_WIDGET(viewer->rotate_right)); + gtk_widget_show(GTK_WIDGET(viewer->rotate_left)); + gtk_widget_ref(GTK_WIDGET(viewer->rotate_left)); + gtk_widget_show(GTK_WIDGET(viewer->doc_info)); + gtk_widget_ref(GTK_WIDGET(viewer->doc_info)); gtk_widget_show(GTK_WIDGET(viewer->doc_label)); gtk_widget_ref(GTK_WIDGET(viewer->doc_label)); gtk_widget_show(GTK_WIDGET(viewer->icon_type)); @@ -665,43 +942,109 @@ static MimeViewer *poppler_viewer_create gtk_widget_ref(GTK_WIDGET(viewer->pdf_view)); /* setting tooltips */ - gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), viewer->prev, - _("Previous Page"), - ""); - - gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), viewer->next, - _("Next Page"), - ""); - - gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), viewer->zoom_in, - _("Zoom In"), - ""); - - gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), viewer->zoom_out, - _("Zoom Out"), - ""); - gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), viewer->zoom_fit, - _("Fit Page"), - ""); - gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), viewer->zoom_width, - _("Fit Page Width"), - ""); + gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), + viewer->prev, + _("Previous Page"), + ""); + + gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), + viewer->next, + _("Next Page"), + ""); + + gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), + viewer->zoom_in, + _("Zoom In"), + ""); + + gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), + viewer->zoom_out, + _("Zoom Out"), + ""); + gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), + viewer->zoom_fit, + _("Fit Page"), + ""); + gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), + viewer->zoom_width, + _("Fit Page Width"), + ""); + gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), + viewer->rotate_left, + _("Rotate Left"), + ""); + gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), + viewer->rotate_right, + _("Rotate Right"), + ""); + gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips), + viewer->doc_info, + _("Document Info"), + ""); + /* Signals */ - g_signal_connect (G_OBJECT(viewer->cur_page), "key_press_event", G_CALLBACK(entry_current_page_cb), (gpointer) viewer); - - //g_signal_connect (G_OBJECT(viewer->scrollwin), "key_press_event", G_CALLBACK(scrollwin_key_down_cb), (gpointer) viewer); - //g_signal_connect (G_OBJECT(viewer->scrollwin), "key_press_event", G_CALLBACK(scrollwin_key_up_cb), (gpointer) viewer); - //g_signal_connect (G_OBJECT(viewer->scrollwin), "key_press_event", G_CALLBACK(scrollwin_page_down_cb), (gpointer) viewer); - //g_signal_connect (G_OBJECT(viewer->pdf_view), "key_press_event", G_CALLBACK(scrollwin_page_up_cb), (gpointer) viewer); - - g_signal_connect (G_OBJECT(viewer->prev), "clicked", G_CALLBACK(poppler_prev_page_cb), (gpointer) viewer); - g_signal_connect (G_OBJECT(viewer->next), "clicked", G_CALLBACK(poppler_next_page_cb), (gpointer) viewer); - g_signal_connect (G_OBJECT(viewer->zoom_in), "clicked", G_CALLBACK(poppler_zoom_in_cb), (gpointer) viewer); - g_signal_connect (G_OBJECT(viewer->zoom_out), "clicked", G_CALLBACK(poppler_zoom_out_cb), (gpointer) viewer); - - g_signal_connect (G_OBJECT(viewer->zoom_fit), "clicked", G_CALLBACK(poppler_zoom_fit_cb), (gpointer) viewer); - g_signal_connect (G_OBJECT(viewer->zoom_width), "clicked", G_CALLBACK(poppler_zoom_width_cb), (gpointer) viewer); + g_signal_connect (G_OBJECT(viewer->cur_page), + "key_press_event", + G_CALLBACK(entry_current_page_cb), + (gpointer) viewer); + /* + g_signal_connect (G_OBJECT(viewer->scrollwin), + "key_press_event", + G_CALLBACK(scrollwin_key_down_cb), + (gpointer) viewer); + g_signal_connect (G_OBJECT(viewer->scrollwin), + "key_press_event", + G_CALLBACK(scrollwin_key_up_cb), + (gpointer) viewer); + g_signal_connect (G_OBJECT(viewer->scrollwin), + "key_press_event", + G_CALLBACK(scrollwin_page_down_cb), + (gpointer) viewer); + g_signal_connect (G_OBJECT(viewer->pdf_view), + "key_press_event", + G_CALLBACK(scrollwin_page_up_cb), + (gpointer) viewer); + */ + + g_signal_connect (G_OBJECT(viewer->prev), + "clicked", + G_CALLBACK(poppler_prev_page_cb), + (gpointer) viewer); + g_signal_connect (G_OBJECT(viewer->next), + "clicked", + G_CALLBACK(poppler_next_page_cb), + (gpointer) viewer); + g_signal_connect (G_OBJECT(viewer->zoom_in), + "clicked", + G_CALLBACK(poppler_zoom_in_cb), + (gpointer) viewer); + g_signal_connect (G_OBJECT(viewer->zoom_out), + "clicked", + G_CALLBACK(poppler_zoom_out_cb), + (gpointer) viewer); + + g_signal_connect (G_OBJECT(viewer->zoom_fit), + "clicked", + G_CALLBACK(poppler_zoom_fit_cb), + (gpointer) viewer); + g_signal_connect (G_OBJECT(viewer->zoom_width), + "clicked", + G_CALLBACK(poppler_zoom_width_cb), + (gpointer) viewer); + + g_signal_connect (G_OBJECT(viewer->rotate_right), + "clicked", + G_CALLBACK(poppler_rotate_right_cb), + (gpointer) viewer); + g_signal_connect (G_OBJECT(viewer->rotate_left), + "clicked", + G_CALLBACK(poppler_rotate_left_cb), + (gpointer) viewer); + g_signal_connect (G_OBJECT(viewer->doc_info), + "clicked", + G_CALLBACK(poppler_document_info_cb), + (gpointer) viewer); viewer->filename = NULL; return (MimeViewer *) viewer; @@ -721,6 +1064,12 @@ static MimeViewerFactory poppler_viewer_ gint plugin_init(gchar **error) { + msg = g_strdup_printf(_("This plugin enables the viewing of PDF and PostScript " + "attachments using the Poppler %s Lib.\n\n" + "PDF Viewer is Copyright (C) 2007\n" + "by Salvatore De Paolis " + ),poppler_get_version()); + bindtextdomain(TEXTDOMAIN, LOCALEDIR); bind_textdomain_codeset(TEXTDOMAIN, "UTF-8"); @@ -733,7 +1082,8 @@ gint plugin_init(gchar **error) void plugin_done(void) { - mimeview_unregister_viewer_factory(&poppler_viewer_factory); + g_free(msg); + mimeview_unregister_viewer_factory(&poppler_viewer_factory); } const gchar *plugin_name(void) @@ -743,8 +1093,7 @@ const gchar *plugin_name(void) const gchar *plugin_desc(void) { - return _("This plugin enables the viewing of PDF and PostScript " - "attachments using the Poppler lib."); + return msg; } const gchar *plugin_type(void)