Public feed
#378404
Index: src/poppler_viewer.c
===================================================================
RCS file: /pack/anoncvs/sylpheedclaws/plugins/pdf_viewer/src/Attic/poppler_viewer.c,v
retrieving revision 1.1.2.10
diff -u -p -r1.1.2.10 poppler_viewer.c
--- src/poppler_viewer.c 2007/03/02 07:50:22 1.1.2.10
+++ src/poppler_viewer.c 2007/03/02 14:19:35
@@ -101,8 +101,6 @@ struct _PopplerViewer
gchar *filename;
gchar *fsname;
gchar *doc_info_text;
- gint cur_page_int;
- gint num_pages_int;
gint rotate;
double zoom;
double width;
@@ -131,21 +129,19 @@ static GtkWidget *poppler_get_widget(Mim
static void poppler_prev_page_cb(GtkButton *button, PopplerViewer *viewer)
{
- if (viewer->cur_page_int > 1)
- poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int - 1);
+ poppler_pdf_view_update((MimeViewer *)viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)) - 1);
}
static void poppler_next_page_cb(GtkButton *button, PopplerViewer *viewer)
{
- if (viewer->cur_page_int < viewer->num_pages_int)
- poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int + 1);
+ poppler_pdf_view_update((MimeViewer *)viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)) + 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);
+ poppler_pdf_view_update((MimeViewer *)viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)));
}
}
@@ -153,7 +149,7 @@ static void poppler_zoom_out_cb(GtkButto
{
if (viewer->zoom > 0.3) {
viewer->zoom -= ZOOM_FACTOR;
- poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int);
+ poppler_pdf_view_update((MimeViewer *)viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)));
}
}
@@ -171,7 +167,7 @@ static void poppler_zoom_fit_cb(GtkButto
viewer->zoom = yratio;
else
viewer->zoom = xratio;
- poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int);
+ poppler_pdf_view_update((MimeViewer *)viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)));
}
static void poppler_zoom_width_cb(GtkButton *button, PopplerViewer *viewer)
@@ -182,7 +178,7 @@ static void poppler_zoom_width_cb(GtkBut
debug_print("width: %d\n", allocation->width);
xratio = allocation->width / viewer->width;
viewer->zoom = xratio;
- poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int);
+ poppler_pdf_view_update((MimeViewer *)viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)));
}
static void poppler_rotate_right_cb(GtkButton *button, PopplerViewer *viewer)
@@ -191,7 +187,7 @@ static void poppler_rotate_right_cb(GtkB
viewer->rotate = 0;
viewer->rotate += (gint) ROTATION;
- poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int);
+ poppler_pdf_view_update((MimeViewer *)viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)));
}
static void poppler_rotate_left_cb(GtkButton *button, PopplerViewer *viewer)
@@ -200,7 +196,7 @@ static void poppler_rotate_left_cb(GtkBu
viewer->rotate = 360;
viewer->rotate = abs(viewer->rotate - (gint) ROTATION);
- poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int);
+ poppler_pdf_view_update((MimeViewer *)viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)));
}
static const char * poppler_get_document_info_mode(PopplerPageMode mode)
@@ -413,12 +409,9 @@ static void poppler_document_info_cb(Gtk
static gboolean entry_current_page_cb(GtkEntry *entry, GdkEventKey *event, PopplerViewer *viewer)
{
- char *endptr;
-
if(event != NULL && event->keyval == GDK_Return) {
- if(strtol(gtk_entry_get_text(GTK_ENTRY(viewer->cur_page)), &endptr, 10)) {
- viewer->cur_page_int = strtol(gtk_entry_get_text(GTK_ENTRY(viewer->cur_page)), &endptr, 10);
- poppler_pdf_view_update((MimeViewer *)viewer, FALSE, viewer->cur_page_int);
+ if((gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)))) {
+ poppler_pdf_view_update((MimeViewer *)viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page)));
}
}
return FALSE;
@@ -529,9 +522,7 @@ static void poppler_pdf_view_update(Mime
PopplerViewer *viewer = (PopplerViewer *) _viewer;
GError *error;
GdkPixbuf *pb;
- viewer->cur_page_int = page_num;
- gchar *page_str = g_strdup_printf("%d", page_num);
- gtk_label_set_text(GTK_LABEL(viewer->doc_label), "");
+
gchar *tmpfile = NULL;
error = NULL;
if (reload_file) {
@@ -617,47 +608,57 @@ static void poppler_pdf_view_update(Mime
return;
}
- if (reload_file) {
- viewer->num_pages_int = poppler_document_get_n_pages( viewer->pdf_doc);
- gtk_label_set_text(GTK_LABEL(viewer->num_pages), g_strdup_printf("/ %d",viewer->num_pages_int));
- }
- viewer->pdf_page = poppler_document_get_page_by_label (viewer->pdf_doc, page_str);
- g_free(page_str);
- if (viewer->pdf_page == NULL) {
+ if(page_num > 0 && page_num <= poppler_document_get_n_pages(viewer->pdf_doc)) {
+ gchar *page_str = g_strdup_printf("%d", page_num);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(viewer->cur_page), (gdouble) page_num);
+
+ if (reload_file) {
+ gint n;
+ n = poppler_document_get_n_pages(viewer->pdf_doc);
+ gtk_spin_button_set_range(GTK_SPIN_BUTTON(viewer->cur_page), 1, n);
+ gtk_label_set_text(GTK_LABEL(viewer->num_pages), g_strdup_printf("/ %d", n));
+ }
+
+ viewer->pdf_page = poppler_document_get_page_by_label (viewer->pdf_doc, page_str);
+ g_free(page_str);
+
+ if (viewer->pdf_page == NULL) {
g_warning ("Page not found\n");
return;
- }
+ }
- gtk_entry_set_text(GTK_ENTRY(viewer->cur_page), g_strdup_printf("%d",page_num));
- 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);
- }
+ //gtk_entry_set_text(GTK_ENTRY(viewer->cur_page), g_strdup_printf("%d",page_num));
- 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));
-
- gtk_label_set_text(GTK_LABEL(viewer->doc_label),
- g_strdup_printf(_("%s document"),(poppler_mimepart_get_type(viewer->to_load) == TYPE_PDF) ? "PDF":"Postscript"));
- poppler_show_controls(viewer, TRUE);
-
+ 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));
+
+ gtk_label_set_text(GTK_LABEL(viewer->doc_label),
+ g_strdup_printf(_("%s document"),(poppler_mimepart_get_type(viewer->to_load) == TYPE_PDF) ? "PDF":"Postscript"));
+
+ poppler_show_controls(viewer, TRUE);
+ }
}
static gint poppler_show_mimepart_real(MimeViewer *_viewer)
{
@@ -767,15 +768,15 @@ static gboolean poppler_scroll_page(Mime
return FALSE;
if (!gtkutils_scroll_page(viewer->pdf_view, vadj, up)) {
- if (!up && viewer->cur_page_int < viewer->num_pages_int) {
- poppler_pdf_view_update(_viewer, FALSE, viewer->cur_page_int + 1);
+ if (!up) {
+ poppler_pdf_view_update(_viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page) + 1));
vadj = gtk_scrolled_window_get_vadjustment(
GTK_SCROLLED_WINDOW(viewer->scrollwin));
vadj->value = 0.0;
g_signal_emit_by_name(G_OBJECT(vadj), "value-changed", 0);
return TRUE;
- } else if (up && viewer->cur_page_int > 1) {
- poppler_pdf_view_update(_viewer, FALSE, viewer->cur_page_int - 1);
+ } else if (up) {
+ poppler_pdf_view_update(_viewer, FALSE, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(viewer->cur_page) - 1));
vadj = gtk_scrolled_window_get_vadjustment(
GTK_SCROLLED_WINDOW(viewer->scrollwin));
vadj->value = vadj->upper - vadj->page_size;
@@ -831,11 +832,12 @@ static MimeViewer *poppler_viewer_create
viewer->doc_label = gtk_label_new("");
viewer->vsep = gtk_vseparator_new();
viewer->vsep1 = gtk_vseparator_new();
- viewer->cur_page = gtk_entry_new();
+ viewer->cur_page = gtk_spin_button_new_with_range(0,0,1);
+ gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(viewer->cur_page), TRUE);
viewer->button_bar_tips = gtk_tooltips_new();
- gtk_entry_set_max_length(GTK_ENTRY(viewer->cur_page), 7);
- gtk_widget_set_size_request(viewer->cur_page, 50, -1);
+ //gtk_entry_set_max_length(GTK_ENTRY(viewer->cur_page), 7);
+ //gtk_widget_set_size_request(viewer->cur_page, 50, -1);
viewer->prev = gtk_button_new();
gtk_widget_set_size_request(viewer->prev, -1, -1);
@@ -1095,7 +1097,7 @@ 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 <iwkse@users.sourceforge.net>"
+ "by Salvatore De Paolis <iwkse@claws-mail.org>"
),poppler_get_version());
bindtextdomain(TEXTDOMAIN, LOCALEDIR);