static TabData *info_tab_general_new(InfoData *id) { TabData *td; InfoTabGeneral *tab; GtkWidget *table; GtkWidget *label; tab = g_new0(InfoTabGeneral, 1); table = pref_table_new(NULL, 2, 11, FALSE, FALSE); gtk_container_set_border_width(GTK_CONTAINER(table), PREF_PAD_BORDER); tab->label_file_time = table_add_line(table, 0, 0, _("File date:"), NULL); tab->label_file_size = table_add_line(table, 0, 1, _("File size:"), NULL); tab->label_dimensions = table_add_line(table, 0, 2, _("Dimensions:"), NULL); tab->label_transparent = table_add_line(table, 0, 3, _("Transparent:"), NULL); tab->label_image_size = table_add_line(table, 0, 4, _("Image size:"), NULL); tab->label_compression = table_add_line(table, 0, 5, _("Compress ratio:"), NULL); tab->label_mime_type = table_add_line(table, 0, 6, _("File type:"), NULL); tab->label_user = table_add_line(table, 0, 7, _("Owner:"), NULL); tab->label_group = table_add_line(table, 0, 8, _("Group:"), NULL); tab->label_perms = table_add_line(table, 0, 9, "", NULL); label = gtk_label_new(_("General")); gtk_notebook_append_page(GTK_NOTEBOOK(id->notebook), table, label); gtk_widget_show(table); /* register */ td = g_new0(TabData, 1); td->func_free = info_tab_general_free; td->func_sync = info_tab_general_sync; td->func_image = info_tab_general_image; td->data = tab; return td; }
GtkWidget *bar_exif_new(gint show_title, const gchar *path, gint advanced, GtkWidget *bounding_widget) { ExifBar *eb; GtkWidget *table; GtkWidget *viewport; GtkWidget *hbox; GtkWidget *button; gint len; gint i; eb = g_new0(ExifBar, 1); eb->labels = g_new0(GtkWidget *, bar_exif_key_count); eb->vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP); g_object_set_data(G_OBJECT(eb->vbox), "bar_exif_data", eb); g_signal_connect_after(G_OBJECT(eb->vbox), "destroy", G_CALLBACK(bar_exif_destroy), eb); eb->allow_search = !show_title; if (show_title) { GtkWidget *box; GtkWidget *label; GtkWidget *button; GtkWidget *arrow; box = gtk_hbox_new(FALSE, 0); label = sizer_new(eb->vbox, bounding_widget, SIZER_POS_LEFT); sizer_set_limits(label, EXIF_BAR_SIZE_INCREMENT * 2, -1, -1 , -1); gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); gtk_widget_show(label); label = gtk_label_new(_("Exif")); pref_label_bold(label, TRUE, FALSE); gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0); gtk_widget_show(label); button = gtk_button_new(); gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(bar_exif_smaller), eb); gtk_box_pack_end(GTK_BOX(box), button, FALSE, FALSE, 0); arrow = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_NONE); gtk_widget_set_size_request(arrow, EXIF_BAR_ARROW_SIZE, EXIF_BAR_ARROW_SIZE); gtk_container_add(GTK_CONTAINER(button), arrow); gtk_widget_show(arrow); gtk_widget_show(button); button = gtk_button_new(); gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(bar_exif_larger), eb); gtk_box_pack_end(GTK_BOX(box), button, FALSE, FALSE, 0); arrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_NONE); gtk_widget_set_size_request(arrow, EXIF_BAR_ARROW_SIZE, EXIF_BAR_ARROW_SIZE); gtk_container_add(GTK_CONTAINER(button), arrow); gtk_widget_show(arrow); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(eb->vbox), box, FALSE, FALSE, 0); gtk_widget_show(box); } table = gtk_table_new(2, bar_exif_key_count + 1 + EXIF_BAR_CUSTOM_COUNT, FALSE); eb->table = table; len = bar_exif_key_count; for (i = 0; i < len; i++) { const gchar *text; text = exif_get_description_by_key(bar_exif_key_list[i]); eb->labels[i] = table_add_line(table, 0, i, text, NULL); } eb->custom_sep = gtk_hseparator_new(); gtk_table_attach(GTK_TABLE(table), eb->custom_sep, 0, 1, bar_exif_key_count, bar_exif_key_count + 1, GTK_FILL, GTK_FILL, 2, 2); for (i = 0; i < EXIF_BAR_CUSTOM_COUNT; i++) { table_add_line_custom(table, 0, bar_exif_key_count + 1 + i, "", "", &eb->custom_name[i], &eb->custom_value[i]); } eb->scrolled = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(eb->scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); viewport = gtk_viewport_new(NULL, NULL); gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE); gtk_container_add(GTK_CONTAINER(eb->scrolled), viewport); gtk_widget_show(viewport); gtk_container_add(GTK_CONTAINER(viewport), table); gtk_widget_show(table); gtk_box_pack_start(GTK_BOX(eb->vbox), eb->scrolled, TRUE, TRUE, 0); hbox = gtk_hbox_new(FALSE, PREF_PAD_SPACE); gtk_box_pack_end(GTK_BOX(eb->vbox), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); button = gtk_check_button_new_with_label(_("Advanced view")); if (advanced) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(bar_exif_advanced_cb), eb); gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_widget_show(button); eb->advanced_scrolled = NULL; eb->listview = NULL; if (advanced) { bar_exif_advanced_build_view(eb); gtk_widget_show(eb->advanced_scrolled); } else { gtk_widget_show(eb->scrolled); } eb->path = g_strdup(path); bar_exif_update(eb); return eb->vbox; }