static void pgd_action_view_add_destination (GtkWidget *action_view, GtkGrid *table, PopplerDest *dest, gboolean remote, gint *row) { PopplerDocument *document; GEnumValue *enum_value; gchar *str; pgd_table_add_property (table, "<b>Type:</b>", "Destination", row); enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (POPPLER_TYPE_DEST_TYPE), dest->type); pgd_table_add_property (table, "<b>Destination Type:</b>", enum_value->value_name, row); document = g_object_get_data (G_OBJECT (action_view), "document"); if (dest->type != POPPLER_DEST_NAMED) { str = NULL; if (document && !remote) { PopplerPage *poppler_page; gchar *page_label; poppler_page = poppler_document_get_page (document, MAX (0, dest->page_num - 1)); g_object_get (G_OBJECT (poppler_page), "label", &page_label, NULL); if (page_label) { str = g_strdup_printf ("%d (%s)", dest->page_num, page_label); g_free (page_label); } } if (!str) str = g_strdup_printf ("%d", dest->page_num); pgd_table_add_property (table, "<b>Page:</b>", str, row); g_free (str); str = g_strdup_printf ("%.2f", dest->left); pgd_table_add_property (table, "<b>Left:</b>", str, row); g_free (str); str = g_strdup_printf ("%.2f", dest->right); pgd_table_add_property (table, "<b>Right:</b>", str, row); g_free (str); str = g_strdup_printf ("%.2f", dest->top); pgd_table_add_property (table, "<b>Top:</b>", str, row); g_free (str); str = g_strdup_printf ("%.2f", dest->bottom); pgd_table_add_property (table, "<b>Bottom:</b>", str, row); g_free (str); str = g_strdup_printf ("%.2f", dest->zoom); pgd_table_add_property (table, "<b>Zoom:</b>", str, row); g_free (str); } else { pgd_table_add_property (table, "<b>Named Dest:</b>", dest->named_dest, row); if (document && !remote) { PopplerDest *new_dest; new_dest = poppler_document_find_dest (document, dest->named_dest); if (new_dest) { GtkWidget *new_table, *alignment; gint new_row = 0; alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 5, 5, 12, 5); new_table = gtk_grid_new (); gtk_grid_set_column_spacing (GTK_GRID (new_table), 6); gtk_grid_set_row_spacing (GTK_GRID (new_table), 6); gtk_grid_attach (GTK_GRID(table), alignment, 0, *row, 1, 1); gtk_widget_show (alignment); pgd_action_view_add_destination (action_view, GTK_GRID (new_table), new_dest, FALSE, &new_row); poppler_dest_free (new_dest); gtk_container_add (GTK_CONTAINER (alignment), new_table); gtk_widget_show (new_table); *row += 1; } } } }
static VALUE rg_find_dest(VALUE self, VALUE link_name) { return GOBJ2RVAL(poppler_document_find_dest(RVAL2DOC(self), RVAL2CSTR(link_name))); }