Public feed
#379702
? src/doc_index.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.25
diff -u -p -r1.1.2.25 poppler_viewer.c
--- src/poppler_viewer.c 2007/03/03 06:58:32 1.1.2.25
+++ src/poppler_viewer.c 2007/03/03 13:05:50
@@ -58,6 +58,7 @@
#include "rotate_right.xpm"
#include "rotate_left.xpm"
#include "doc_info.xpm"
+#include "doc_index.xpm"
#ifdef USE_PTHREAD
#include <pthread.h>
@@ -72,45 +73,47 @@ static gchar *msg = NULL;
struct _PopplerViewer
{
- MimeViewer mimeviewer;
- GtkWidget *vsep;
- GtkWidget *vsep1;
- GtkWidget *vbox;
- GtkWidget *pdf_view;
- GtkWidget *scrollwin;
- GtkWidget *icon_type;
- GdkPixmap *icon_pixmap;
- GdkBitmap *icon_bitmap;
- GtkWidget *doc_label;
- GtkWidget *cur_page;
+ MimeViewer mimeviewer;
+ GtkWidget *vsep;
+ GtkWidget *vsep1;
+ GtkWidget *vbox;
+ GtkWidget *pdf_view;
+ GtkWidget *scrollwin;
+ GtkWidget *icon_type;
+ GdkPixmap *icon_pixmap;
+ GdkBitmap *icon_bitmap;
+ GtkWidget *doc_label;
+ GtkWidget *cur_page;
/* begin GtkButtons */
- GtkWidget *first_page;
- GtkWidget *last_page;
- GtkWidget *prev_page;
- GtkWidget *next_page;
- GtkWidget *zoom_in;
- GtkWidget *zoom_out;
- GtkWidget *zoom_fit;
- GtkWidget *zoom_width;
- GtkWidget *rotate_left;
- GtkWidget *rotate_right;
- GtkWidget *doc_info;
+ GtkWidget *first_page;
+ GtkWidget *last_page;
+ GtkWidget *prev_page;
+ GtkWidget *next_page;
+ GtkWidget *zoom_in;
+ GtkWidget *zoom_out;
+ GtkWidget *zoom_fit;
+ GtkWidget *zoom_width;
+ GtkWidget *rotate_left;
+ GtkWidget *rotate_right;
+ GtkWidget *doc_info;
+ GtkWidget *doc_index;
/* end GtkButtons */
- GtkTable *table_doc_info;
- GtkWidget *hbox;
- GtkTooltips *button_bar_tips;
- PopplerDocument *pdf_doc;
- PopplerPage *pdf_page;
- gchar *target_filename;
- gchar *filename;
- gchar *fsname;
- gchar *doc_info_text;
- gint rotate;
- double zoom;
- double width;
- double height;
- MimeInfo *mimeinfo;
- MimeInfo *to_load;
+ GtkTable *table_doc_info;
+ GtkWidget *hbox;
+ GtkTooltips *button_bar_tips;
+ PopplerDocument *pdf_doc;
+ PopplerPage *pdf_page;
+ PopplerIndexIter *pdf_index;
+ gchar *target_filename;
+ gchar *filename;
+ gchar *fsname;
+ gchar *doc_info_text;
+ gint rotate;
+ double zoom;
+ double width;
+ double height;
+ MimeInfo *mimeinfo;
+ MimeInfo *to_load;
};
typedef enum {
@@ -231,6 +234,42 @@ static const char * poppler_get_document
return (gchar *) enum_value->value_name;
}
*/
+static void poppler_get_document_index(PopplerIndexIter *index_iter)
+{
+ do
+ {
+ PopplerAction *action;
+ PopplerIndexIter *child;
+
+ action = poppler_index_iter_get_action (index_iter);
+ g_print ("Action: %d\n", action->type);
+ g_print ("Named: %s\n", action->named.title);
+ g_print ("Goto Dest: %s\n", action->goto_dest.title);
+ g_print ("Goto Launch: %s\n", action->launch.title);
+ poppler_action_free (action);
+ child = poppler_index_iter_get_child (index_iter);
+ if (child)
+ poppler_get_document_index (child);
+ poppler_index_iter_free (child);
+ }
+ while (poppler_index_iter_next (index_iter));
+}
+static void poppler_get_document_index_cb(GtkButton *button, PopplerViewer *viewer)
+{
+ poppler_get_document_index((PopplerIndexIter *) viewer->pdf_index);
+}
+static void poppler_check_document_index(PopplerViewer *viewer)
+{
+ viewer->pdf_index = poppler_index_iter_new(viewer->pdf_doc);
+ if (viewer->pdf_index) {
+ if(!GTK_WIDGET_IS_SENSITIVE(viewer->doc_index))
+ gtk_widget_set_sensitive(viewer->doc_index, TRUE);
+ }
+ else {
+ gtk_widget_set_sensitive(viewer->doc_index, FALSE);
+ }
+}
+
static char * poppler_get_document_format_data(GTime utime)
{
time_t time = (time_t) utime;
@@ -421,6 +460,7 @@ static void poppler_show_controls(Popple
gtk_widget_show(viewer->rotate_right);
gtk_widget_show(viewer->rotate_left);
gtk_widget_show(viewer->doc_info);
+ gtk_widget_show(viewer->doc_index);
} else {
gtk_widget_hide(viewer->first_page);
gtk_widget_hide(viewer->cur_page);
@@ -436,6 +476,7 @@ static void poppler_show_controls(Popple
gtk_widget_hide(viewer->rotate_right);
gtk_widget_hide(viewer->rotate_left);
gtk_widget_hide(viewer->doc_info);
+ gtk_widget_hide(viewer->doc_index);
}
}
@@ -447,9 +488,9 @@ static void poppler_pdf_view_update(Mime
gchar *tmpfile = NULL;
error = NULL;
- debug_print("poppler_pdf_view_update\n");
if (reload_file) {
- debug_print("\treload_file\n");
+
+
pb = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, 1, 1);
gdk_pixbuf_fill (pb, 0x00000000);
gtk_image_set_from_pixbuf(GTK_IMAGE(viewer->pdf_view), pb);
@@ -524,11 +565,12 @@ static void poppler_pdf_view_update(Mime
poppler_document_get_n_pages(viewer->pdf_doc),
poppler_document_get_n_pages(viewer->pdf_doc) > 1 ? "s":"")
));
+
+
poppler_show_controls(viewer, TRUE);
main_window_cursor_normal(mainwindow_get_mainwindow());
}
if (viewer->pdf_doc == NULL) {
- debug_print("viewer->pdf_doc is null\n");
strretchomp(error->message);
stock_pixmap_gdk(viewer->hbox,
@@ -543,6 +585,9 @@ static void poppler_pdf_view_update(Mime
return;
}
+ /* check for the index if exists */
+ poppler_check_document_index((PopplerViewer *) viewer);
+
if(page_num > 0 && page_num <= poppler_document_get_n_pages(viewer->pdf_doc)) {
gchar *page_str = g_strdup_printf("%d", page_num);
@@ -654,7 +699,10 @@ static void poppler_clear_viewer(MimeVie
PopplerViewer *viewer = (PopplerViewer *) _viewer;
GtkAdjustment *vadj;
GdkPixbuf *pb;
-
+
+ //if(viewer->pdf_index)
+ // poppler_index_iter_free(viewer->pdf_index);
+
debug_print("poppler_clear_viewer\n");
viewer->to_load = NULL;
@@ -811,6 +859,9 @@ static MimeViewer *poppler_viewer_create
gtk_widget_set_size_request(viewer->doc_info, -1, -1);
button_set_pixmap(viewer->doc_info, doc_info_xpm);
+ viewer->doc_index = gtk_button_new();
+ gtk_widget_set_size_request(viewer->doc_index, -1, -1);
+ button_set_pixmap(viewer->doc_index, doc_index_xpm);
gtk_scrolled_window_set_policy(
@@ -861,7 +912,8 @@ static MimeViewer *poppler_viewer_create
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->hbox), viewer->doc_index, 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);
@@ -905,6 +957,8 @@ static MimeViewer *poppler_viewer_create
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_index));
+ gtk_widget_ref(GTK_WIDGET(viewer->doc_index));
gtk_widget_show(GTK_WIDGET(viewer->doc_label));
gtk_widget_ref(GTK_WIDGET(viewer->doc_label));
gtk_widget_show(GTK_WIDGET(viewer->icon_type));
@@ -930,11 +984,6 @@ static MimeViewer *poppler_viewer_create
NULL);
gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips),
- viewer->next_page,
- _("Next Page"),
- NULL);
-
- gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips),
viewer->last_page,
_("Last Page"),
NULL);
@@ -947,22 +996,27 @@ static MimeViewer *poppler_viewer_create
viewer->zoom_out,
_("Zoom Out"),
NULL);
+
gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips),
viewer->zoom_fit,
_("Fit Page"),
NULL);
+
gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips),
viewer->zoom_width,
_("Fit Page Width"),
NULL);
+
gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips),
viewer->rotate_left,
_("Rotate Left"),
NULL);
+
gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips),
viewer->rotate_right,
_("Rotate Right"),
NULL);
+
gtk_tooltips_set_tip (GTK_TOOLTIPS (viewer->button_bar_tips),
viewer->doc_info,
_("Document Info"),
@@ -1032,15 +1086,22 @@ static MimeViewer *poppler_viewer_create
"clicked",
G_CALLBACK(poppler_button_rotate_right_cb),
(gpointer) viewer);
+
g_signal_connect (G_OBJECT(viewer->rotate_left),
"clicked",
G_CALLBACK(poppler_button_rotate_left_cb),
(gpointer) viewer);
+
g_signal_connect (G_OBJECT(viewer->doc_info),
"clicked",
G_CALLBACK(poppler_button_document_info_cb),
(gpointer) viewer);
-
+
+ g_signal_connect (G_OBJECT(viewer->doc_index),
+ "clicked",
+ G_CALLBACK(poppler_get_document_index_cb),
+ (gpointer) viewer);
+
viewer->target_filename = NULL;
viewer->filename = NULL;
viewer->fsname = NULL;