static void pgd_annot_view_set_annot_screen (GtkWidget *table, PopplerAnnotScreen *annot, gint *row) { GtkWidget *action_view; action_view = pgd_action_view_new (NULL); pgd_action_view_set_action (action_view, poppler_annot_screen_get_action (annot)); pgd_table_add_property_with_custom_widget (GTK_GRID (table), "<b>Action:</b>", action_view, row); gtk_widget_show (action_view); }
void pgd_table_add_property_with_value_widget (GtkGrid *table, const gchar *markup, GtkWidget **value_widget, const gchar *value, gint *row) { GtkWidget *label; *value_widget = label = gtk_label_new (value); g_object_set (G_OBJECT (label), "xalign", 0.0, "selectable", TRUE, "ellipsize", PANGO_ELLIPSIZE_END, NULL); pgd_table_add_property_with_custom_widget (table, markup, label, row); }
static void pgd_annot_view_set_annot_movie (GtkWidget *table, PopplerAnnotMovie *annot, gint *row) { GtkWidget *movie_view; gchar *text; text = poppler_annot_movie_get_title (annot); pgd_table_add_property (GTK_GRID (table), "<b>Movie Title:</b>", text, row); g_free (text); movie_view = pgd_movie_view_new (); pgd_movie_view_set_movie (movie_view, poppler_annot_movie_get_movie (annot)); pgd_table_add_property_with_custom_widget (GTK_GRID (table), "<b>Movie:</b>", movie_view, row); gtk_widget_show (movie_view); }
static void pgd_annot_view_set_annot_file_attachment (GtkWidget *table, PopplerAnnotFileAttachment *annot, gint *row) { GtkWidget *button; gchar *text; text = poppler_annot_file_attachment_get_name (annot); pgd_table_add_property (GTK_GRID (table), "<b>Attachment Name:</b>", text, row); g_free (text); button = gtk_button_new_with_label ("Save Attachment"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (pgd_annot_save_file_attachment_button_clicked), (gpointer)annot); pgd_table_add_property_with_custom_widget (GTK_GRID (table), "<b>File Attachment:</b>", button, row); gtk_widget_show (button); }
void pgd_movie_view_set_movie (GtkWidget *movie_view, PopplerMovie *movie) { GtkWidget *alignment; GtkWidget *table; GtkWidget *button; gint row = 0; alignment = gtk_bin_get_child (GTK_BIN (movie_view)); if (alignment) { gtk_container_remove (GTK_CONTAINER (movie_view), alignment); } alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 5, 5, 12, 5); gtk_container_add (GTK_CONTAINER (movie_view), alignment); gtk_widget_show (alignment); if (!movie) return; table = gtk_grid_new (); gtk_grid_set_column_spacing (GTK_GRID (table), 6); gtk_grid_set_row_spacing (GTK_GRID (table), 6); pgd_table_add_property (GTK_GRID (table), "<b>Filename:</b>", poppler_movie_get_filename (movie), &row); pgd_table_add_property (GTK_GRID (table), "<b>Need Poster:</b>", poppler_movie_need_poster (movie) ? "Yes" : "No", &row); pgd_table_add_property (GTK_GRID (table), "<b>Show Controls:</b>", poppler_movie_show_controls (movie) ? "Yes" : "No", &row); button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY); g_signal_connect (button, "clicked", G_CALLBACK (pgd_movie_view_play_movie), movie); pgd_table_add_property_with_custom_widget (GTK_GRID (table), NULL, button, &row); gtk_widget_show (button); gtk_container_add (GTK_CONTAINER (alignment), table); gtk_widget_show (table); }
void pgd_action_view_set_action (GtkWidget *action_view, PopplerAction *action) { GtkWidget *alignment; GtkWidget *table; gint row = 0; alignment = gtk_bin_get_child (GTK_BIN (action_view)); if (alignment) { gtk_container_remove (GTK_CONTAINER (action_view), alignment); } alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 5, 5, 12, 5); gtk_container_add (GTK_CONTAINER (action_view), alignment); gtk_widget_show (alignment); if (!action) return; table = gtk_grid_new (); gtk_grid_set_column_spacing (GTK_GRID (table), 6); gtk_grid_set_row_spacing (GTK_GRID (table), 6); pgd_table_add_property (GTK_GRID (table), "<b>Title:</b>", action->any.title, &row); switch (action->type) { case POPPLER_ACTION_UNKNOWN: pgd_table_add_property (GTK_GRID (table), "<b>Type:</b>", "Unknown", &row); break; case POPPLER_ACTION_NONE: pgd_table_add_property (GTK_GRID (table), "<b>Type:</b>", "None", &row); break; case POPPLER_ACTION_GOTO_DEST: pgd_action_view_add_destination (action_view, GTK_GRID (table), action->goto_dest.dest, FALSE, &row); break; case POPPLER_ACTION_GOTO_REMOTE: pgd_table_add_property (GTK_GRID (table), "<b>Type:</b>", "Remote Destination", &row); pgd_table_add_property (GTK_GRID (table), "<b>Filename:</b>", action->goto_remote.file_name, &row); pgd_action_view_add_destination (action_view, GTK_GRID (table), action->goto_remote.dest, TRUE, &row); break; case POPPLER_ACTION_LAUNCH: pgd_table_add_property (GTK_GRID (table), "<b>Type:</b>", "Launch", &row); pgd_table_add_property (GTK_GRID (table), "<b>Filename:</b>", action->launch.file_name, &row); pgd_table_add_property (GTK_GRID (table), "<b>Params:</b>", action->launch.params, &row); break; case POPPLER_ACTION_URI: pgd_table_add_property (GTK_GRID (table), "<b>Type:</b>", "External URI", &row); pgd_table_add_property (GTK_GRID (table), "<b>URI</b>", action->uri.uri, &row); break; case POPPLER_ACTION_NAMED: pgd_table_add_property (GTK_GRID (table), "<b>Type:</b>", "Named Action", &row); pgd_table_add_property (GTK_GRID (table), "<b>Name:</b>", action->named.named_dest, &row); break; case POPPLER_ACTION_MOVIE: { GtkWidget *movie_view = pgd_movie_view_new (); pgd_table_add_property (GTK_GRID (table), "<b>Type:</b>", "Movie", &row); pgd_table_add_property (GTK_GRID (table), "<b>Operation:</b>", get_movie_op (action->movie.operation), &row); pgd_movie_view_set_movie (movie_view, action->movie.movie); pgd_table_add_property_with_custom_widget (GTK_GRID (table), "<b>Movie:</b>", movie_view, &row); } break; case POPPLER_ACTION_RENDITION: { gchar *text; pgd_table_add_property (GTK_GRID (table), "<b>Type:</b>", "Rendition", &row); text = g_strdup_printf ("%d", action->rendition.op); pgd_table_add_property (GTK_GRID (table), "<b>Operation:</b>", text, &row); g_free (text); if (action->rendition.media) { gboolean embedded = poppler_media_is_embedded (action->rendition.media); GtkWidget *button; pgd_table_add_property (GTK_GRID (table), "<b>Embedded:</b>", embedded ? "Yes": "No", &row); if (embedded) { const gchar *mime_type = poppler_media_get_mime_type (action->rendition.media); pgd_table_add_property (GTK_GRID (table), "<b>Mime type:</b>", mime_type ? mime_type : "", &row); } else { pgd_table_add_property (GTK_GRID (table), "<b>Filename:</b>", poppler_media_get_filename (action->rendition.media), &row); } button = gtk_button_new_from_stock (GTK_STOCK_MEDIA_PLAY); g_signal_connect (button, "clicked", G_CALLBACK (pgd_action_view_play_rendition), action->rendition.media); pgd_table_add_property_with_custom_widget (GTK_GRID (table), NULL, button, &row); gtk_widget_show (button); } } break; case POPPLER_ACTION_OCG_STATE: { GList *l; GtkWidget *button; pgd_table_add_property (GTK_GRID (table), "<b>Type:</b>", "OCGState", &row); for (l = action->ocg_state.state_list; l; l = g_list_next (l)) { PopplerActionLayer *action_layer = (PopplerActionLayer *)l->data; gchar *text; gint n_layers = g_list_length (action_layer->layers); switch (action_layer->action) { case POPPLER_ACTION_LAYER_ON: text = g_strdup_printf ("%d layers On", n_layers); break; case POPPLER_ACTION_LAYER_OFF: text = g_strdup_printf ("%d layers Off", n_layers); break; case POPPLER_ACTION_LAYER_TOGGLE: text = g_strdup_printf ("%d layers Toggle", n_layers); break; } pgd_table_add_property (GTK_GRID (table), "<b>Action:</b>", text, &row); g_free (text); } button = gtk_button_new_with_label ("Do action"); g_signal_connect (button, "clicked", G_CALLBACK (pgd_action_view_do_action_layer), action->ocg_state.state_list); pgd_table_add_property_with_custom_widget (GTK_GRID (table), NULL, button, &row); gtk_widget_show (button); } break; case POPPLER_ACTION_JAVASCRIPT: { GtkTextBuffer *buffer; GtkWidget *textview; GtkWidget *swindow; pgd_table_add_property (GTK_GRID (table), "<b>Type:</b>", "JavaScript", &row); buffer = gtk_text_buffer_new (NULL); if (action->javascript.script) gtk_text_buffer_set_text (buffer, action->javascript.script, -1); textview = gtk_text_view_new_with_buffer (buffer); gtk_text_view_set_editable (GTK_TEXT_VIEW (textview), FALSE); g_object_unref (buffer); swindow = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add (GTK_CONTAINER (swindow), textview); gtk_widget_show (textview); pgd_table_add_property_with_custom_widget (GTK_GRID (table), NULL, swindow, &row); gtk_widget_show (swindow); } break; default: g_assert_not_reached (); } gtk_container_add (GTK_CONTAINER (alignment), table); gtk_widget_show (table); }
GtkWidget * pgd_text_create_widget (PopplerDocument *document) { PgdTextDemo *demo; GtkWidget *label; GtkWidget *vbox, *vbox2; GtkWidget *hbox, *page_selector, *area_hbox; GtkWidget *button; GtkWidget *swindow, *textview, *treeview; GtkTreeSelection *selection; GtkWidget *frame, *alignment, *table; GtkWidget *hpaned; GtkCellRenderer *renderer; gchar *str; gint n_pages; gint row = 0; demo = g_new0 (PgdTextDemo, 1); demo->doc = g_object_ref (document); n_pages = poppler_document_get_n_pages (document); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); label = gtk_label_new ("Page:"); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); gtk_widget_show (label); page_selector = gtk_spin_button_new_with_range (1, n_pages, 1); g_signal_connect (G_OBJECT (page_selector), "value-changed", G_CALLBACK (pgd_text_page_selector_value_changed), (gpointer)demo); gtk_box_pack_start (GTK_BOX (hbox), page_selector, FALSE, TRUE, 0); gtk_widget_show (page_selector); str = g_strdup_printf ("of %d", n_pages); label = gtk_label_new (str); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, TRUE, 0); gtk_widget_show (label); g_free (str); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); gtk_widget_show (hbox); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); area_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); label = gtk_label_new ("X1:"); gtk_box_pack_start (GTK_BOX (area_hbox), label, TRUE, TRUE, 0); gtk_widget_show (label); demo->area_x1 = gtk_spin_button_new_with_range (0, 0, 0.01); g_signal_connect (demo->area_x1, "value-changed", G_CALLBACK (pgd_text_area_selector_value_changed), demo); gtk_box_pack_start (GTK_BOX (area_hbox), demo->area_x1, TRUE, TRUE, 0); gtk_widget_show (demo->area_x1); gtk_box_pack_start (GTK_BOX (hbox), area_hbox, FALSE, TRUE, 0); gtk_widget_show (area_hbox); area_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); label = gtk_label_new ("Y1:"); gtk_box_pack_start (GTK_BOX (area_hbox), label, TRUE, TRUE, 0); gtk_widget_show (label); demo->area_y1 = gtk_spin_button_new_with_range (0, 0, 0.01); g_signal_connect (demo->area_y1, "value-changed", G_CALLBACK (pgd_text_area_selector_value_changed), demo); gtk_box_pack_start (GTK_BOX (area_hbox), demo->area_y1, TRUE, TRUE, 0); gtk_widget_show (demo->area_y1); gtk_box_pack_start (GTK_BOX (hbox), area_hbox, FALSE, TRUE, 0); gtk_widget_show (area_hbox); area_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); label = gtk_label_new ("X2:"); gtk_box_pack_start (GTK_BOX (area_hbox), label, TRUE, TRUE, 0); gtk_widget_show (label); demo->area_x2 = gtk_spin_button_new_with_range (0, 0, 0.01); g_signal_connect (demo->area_x2, "value-changed", G_CALLBACK (pgd_text_area_selector_value_changed), demo); gtk_box_pack_start (GTK_BOX (area_hbox), demo->area_x2, TRUE, TRUE, 0); gtk_widget_show (demo->area_x2); gtk_box_pack_start (GTK_BOX (hbox), area_hbox, FALSE, TRUE, 0); gtk_widget_show (area_hbox); area_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); label = gtk_label_new ("Y2:"); gtk_box_pack_start (GTK_BOX (area_hbox), label, TRUE, TRUE, 0); gtk_widget_show (label); demo->area_y2 = gtk_spin_button_new_with_range (0, 0, 0.01); g_signal_connect (demo->area_y2, "value-changed", G_CALLBACK (pgd_text_area_selector_value_changed), demo); gtk_box_pack_start (GTK_BOX (area_hbox), demo->area_y2, TRUE, TRUE, 0); gtk_widget_show (demo->area_y2); gtk_box_pack_start (GTK_BOX (hbox), area_hbox, FALSE, TRUE, 0); gtk_widget_show (area_hbox); pgd_text_area_selector_setup (demo); button = gtk_button_new_with_label ("Get Text"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (pgd_text_get_text), (gpointer)demo); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); gtk_widget_show (hbox); demo->timer_label = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (demo->timer_label), "<i>No text found</i>"); g_object_set (G_OBJECT (demo->timer_label), "xalign", 1.0, NULL); gtk_box_pack_start (GTK_BOX (vbox), demo->timer_label, FALSE, TRUE, 0); gtk_widget_show (demo->timer_label); hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); gtk_paned_set_position (GTK_PANED (hpaned), 300); swindow = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); demo->model = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (demo->model)); demo->treeview = treeview; renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), TEXT_X1_COLUMN, "X1", renderer, "text", TEXT_X1_COLUMN, NULL); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), TEXT_Y1_COLUMN, "Y1", renderer, "text", TEXT_Y1_COLUMN, NULL); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), TEXT_X2_COLUMN, "X2", renderer, "text", TEXT_X2_COLUMN, NULL); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), TEXT_Y2_COLUMN, "Y2", renderer, "text", TEXT_Y2_COLUMN, NULL); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), TEXT_OFFSET_COLUMN, "Offset", renderer, "text", TEXT_OFFSET_COLUMN, NULL); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (selection, "changed", G_CALLBACK (pgd_text_selection_changed), (gpointer) demo); gtk_container_add (GTK_CONTAINER (swindow), treeview); gtk_widget_show (treeview); gtk_box_pack_start (GTK_BOX (vbox2), swindow, TRUE, TRUE, 0); gtk_widget_show (swindow); /* Text attributes */ frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); label = gtk_label_new (NULL); gtk_label_set_markup (GTK_LABEL (label), "<b>Text Attributes</b>"); gtk_frame_set_label_widget (GTK_FRAME (frame), label); gtk_widget_show (label); alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 5, 5, 12, 5); gtk_container_add (GTK_CONTAINER (frame), alignment); gtk_widget_show (alignment); table = gtk_grid_new (); gtk_grid_set_column_spacing (GTK_GRID (table), 6); gtk_grid_set_row_spacing (GTK_GRID (table), 6); demo->font_name = gtk_label_new (NULL); pgd_table_add_property_with_custom_widget (GTK_GRID (table), "<b>Font Name:</b>", demo->font_name, &row); demo->font_size = gtk_label_new (NULL); pgd_table_add_property_with_custom_widget (GTK_GRID (table), "<b>Font Size:</b>", demo->font_size, &row); demo->is_underlined = gtk_label_new (NULL); pgd_table_add_property_with_custom_widget (GTK_GRID (table), "<b>Underlined:</b>", demo->is_underlined, &row); demo->text_color = gtk_image_new (); pgd_table_add_property_with_custom_widget (GTK_GRID (table), "<b>Color:</b>", demo->text_color, &row); gtk_container_add (GTK_CONTAINER (alignment), table); gtk_widget_show (table); gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, FALSE, 12); gtk_widget_show (frame); gtk_paned_add1 (GTK_PANED (hpaned), vbox2); gtk_widget_show (vbox2); swindow = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); demo->buffer = gtk_text_buffer_new (NULL); textview = gtk_text_view_new_with_buffer (demo->buffer); g_signal_connect (textview, "query-tooltip", G_CALLBACK (pgd_text_view_query_tooltip), demo); g_signal_connect (demo->buffer, "notify::has-selection", G_CALLBACK (pgd_text_buffer_selection_changed), textview); gtk_container_add (GTK_CONTAINER (swindow), textview); gtk_widget_show (textview); gtk_paned_add2 (GTK_PANED (hpaned), swindow); gtk_widget_show (swindow); gtk_box_pack_start (GTK_BOX (vbox), hpaned, TRUE, TRUE, 0); gtk_widget_show (hpaned); g_object_weak_ref (G_OBJECT (vbox), (GWeakNotify)pgd_text_free, demo); return vbox; }
static void pgd_form_field_view_set_field (GtkWidget *field_view, PopplerFormField *field) { GtkWidget *alignment; GtkWidget *table; PopplerAction *action; GEnumValue *enum_value; gchar *text; gint row = 0; alignment = gtk_bin_get_child (GTK_BIN (field_view)); if (alignment) { gtk_container_remove (GTK_CONTAINER (field_view), alignment); } alignment = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 5, 5, 12, 5); gtk_container_add (GTK_CONTAINER (field_view), alignment); gtk_widget_show (alignment); if (!field) return; table = gtk_table_new (13, 2, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_table_set_row_spacings (GTK_TABLE (table), 6); text = poppler_form_field_get_name (field); if (text) { pgd_table_add_property (GTK_TABLE (table), "<b>Name:</b>", text, &row); g_free (text); } text = poppler_form_field_get_partial_name (field); if (text) { pgd_table_add_property (GTK_TABLE (table), "<b>Partial Name:</b>", text, &row); g_free (text); } text = poppler_form_field_get_mapping_name (field); if (text) { pgd_table_add_property (GTK_TABLE (table), "<b>Mapping Name:</b>", text, &row); g_free (text); } action = poppler_form_field_get_action (field); if (action) { GtkWidget *action_view; action_view = pgd_action_view_new (NULL); pgd_action_view_set_action (action_view, action); pgd_table_add_property_with_custom_widget (GTK_TABLE (table), "<b>Action:</b>", action_view, &row); gtk_widget_show (action_view); } switch (poppler_form_field_get_field_type (field)) { case POPPLER_FORM_FIELD_BUTTON: enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (POPPLER_TYPE_FORM_BUTTON_TYPE), poppler_form_field_button_get_button_type (field)); pgd_table_add_property (GTK_TABLE (table), "<b>Button Type:</b>", enum_value->value_name, &row); pgd_table_add_property (GTK_TABLE (table), "<b>Button State:</b>", poppler_form_field_button_get_state (field) ? "Active" : "Inactive", &row); break; case POPPLER_FORM_FIELD_TEXT: enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (POPPLER_TYPE_FORM_TEXT_TYPE), poppler_form_field_text_get_text_type (field)); pgd_table_add_property (GTK_TABLE (table), "<b>Text Type:</b>", enum_value->value_name, &row); text = poppler_form_field_text_get_text (field); pgd_table_add_property (GTK_TABLE (table), "<b>Contents:</b>", text, &row); g_free (text); text = g_strdup_printf ("%d", poppler_form_field_text_get_max_len (field)); pgd_table_add_property (GTK_TABLE (table), "<b>Max Length:</b>", text, &row); g_free (text); pgd_table_add_property (GTK_TABLE (table), "<b>Do spellcheck:</b>", poppler_form_field_text_do_spell_check (field) ? "Yes" : "No", &row); pgd_table_add_property (GTK_TABLE (table), "<b>Do scroll:</b>", poppler_form_field_text_do_scroll (field) ? "Yes" : "No", &row); pgd_table_add_property (GTK_TABLE (table), "<b>Rich Text:</b>", poppler_form_field_text_is_rich_text (field) ? "Yes" : "No", &row); pgd_table_add_property (GTK_TABLE (table), "<b>Pasword type:</b>", poppler_form_field_text_is_password (field) ? "Yes" : "No", &row); break; case POPPLER_FORM_FIELD_CHOICE: { gchar *item; gint selected = -1; enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref (POPPLER_TYPE_FORM_CHOICE_TYPE), poppler_form_field_choice_get_choice_type (field)); pgd_table_add_property (GTK_TABLE (table), "<b>Choice Type:</b>", enum_value->value_name, &row); pgd_table_add_property (GTK_TABLE (table), "<b>Editable:</b>", poppler_form_field_choice_is_editable (field) ? "Yes" : "No", &row); pgd_table_add_property (GTK_TABLE (table), "<b>Multiple Selection:</b>", poppler_form_field_choice_can_select_multiple (field) ? "Yes" : "No", &row); pgd_table_add_property (GTK_TABLE (table), "<b>Do spellcheck:</b>", poppler_form_field_choice_do_spell_check (field) ? "Yes" : "No", &row); pgd_table_add_property (GTK_TABLE (table), "<b>Commit on Change:</b>", poppler_form_field_choice_commit_on_change (field) ? "Yes" : "No", &row); text = g_strdup_printf ("%d", poppler_form_field_choice_get_n_items (field)); pgd_table_add_property (GTK_TABLE (table), "<b>Number of items:</b>", text, &row); g_free (text); pgd_form_field_view_add_choice_items (GTK_TABLE (table), field, &selected, &row); if (selected >= 0 && poppler_form_field_choice_get_n_items (field) > selected) { item = poppler_form_field_choice_get_item (field, selected); text = g_strdup_printf ("%d (%s)", selected, item); g_free (item); pgd_table_add_property (GTK_TABLE (table), "<b>Selected item:</b>", text, &row); g_free (text); } text = poppler_form_field_choice_get_text (field); pgd_table_add_property (GTK_TABLE (table), "<b>Contents:</b>", text, &row); g_free (text); } break; case POPPLER_FORM_FIELD_SIGNATURE: case POPPLER_FORM_FIELD_UNKNOWN: break; default: g_assert_not_reached (); } gtk_container_add (GTK_CONTAINER (alignment), table); gtk_widget_show (table); }