static void statusbar_set_date (GtkStatusbar *statusbar, EomThumbView *view) { EomImage *image; gchar *date = NULL; gchar time_buffer[32]; ExifData *exif_data; if (eom_thumb_view_get_n_selected (view) == 0) { return; } image = eom_thumb_view_get_first_selected_image (view); gtk_statusbar_pop (statusbar, 0); if (!eom_image_has_data (image, EOM_IMAGE_DATA_EXIF)) { if (!eom_image_load (image, EOM_IMAGE_DATA_EXIF, NULL, NULL)) { gtk_widget_hide (GTK_WIDGET (statusbar)); } } exif_data = eom_image_get_exif_info (image); if (exif_data) { date = eom_exif_util_format_date (eom_exif_data_get_value (exif_data, EXIF_TAG_DATE_TIME_ORIGINAL, time_buffer, 32)); eom_exif_data_free (exif_data); } if (date) { gtk_statusbar_push (statusbar, 0, date); gtk_widget_show (GTK_WIDGET (statusbar)); g_free (date); } else { gtk_widget_hide (GTK_WIDGET (statusbar)); } }
static void pd_update_metadata_tab (EomPropertiesDialog *prop_dlg, EomImage *image) { EomPropertiesDialogPrivate *priv; GtkNotebook *notebook; #if HAVE_EXIF ExifData *exif_data; #endif #if HAVE_EXEMPI XmpPtr xmp_data; #endif g_return_if_fail (EOM_IS_PROPERTIES_DIALOG (prop_dlg)); priv = prop_dlg->priv; notebook = GTK_NOTEBOOK (priv->notebook); if (TRUE #if HAVE_EXIF && !eom_image_has_data (image, EOM_IMAGE_DATA_EXIF) #endif #if HAVE_EXEMPI && !eom_image_has_data (image, EOM_IMAGE_DATA_XMP) #endif ) { if (gtk_notebook_get_current_page (notebook) == EOM_PROPERTIES_DIALOG_PAGE_EXIF) { gtk_notebook_prev_page (notebook); } else if (gtk_notebook_get_current_page (notebook) == EOM_PROPERTIES_DIALOG_PAGE_DETAILS) { gtk_notebook_set_current_page (notebook, EOM_PROPERTIES_DIALOG_PAGE_GENERAL); } if (gtk_widget_get_visible (priv->exif_box)) { gtk_widget_hide_all (priv->exif_box); } if (gtk_widget_get_visible (priv->metadata_details_box)) { gtk_widget_hide_all (priv->metadata_details_box); } return; } else { if (!gtk_widget_get_visible (priv->exif_box)) gtk_widget_show_all (priv->exif_box); if (priv->netbook_mode && !gtk_widget_get_visible (priv->metadata_details_box)) { gtk_widget_show_all (priv->metadata_details_box); gtk_widget_hide_all (priv->exif_details_expander); } } #if HAVE_EXIF exif_data = (ExifData *) eom_image_get_exif_info (image); eom_exif_set_label (priv->exif_aperture_label, exif_data, EXIF_TAG_FNUMBER); eom_exif_set_label (priv->exif_exposure_label, exif_data, EXIF_TAG_EXPOSURE_TIME); eom_exif_set_focal_length_label (priv->exif_focal_label, exif_data); eom_exif_set_label (priv->exif_flash_label, exif_data, EXIF_TAG_FLASH); eom_exif_set_label (priv->exif_iso_label, exif_data, EXIF_TAG_ISO_SPEED_RATINGS); eom_exif_set_label (priv->exif_metering_label, exif_data, EXIF_TAG_METERING_MODE); eom_exif_set_label (priv->exif_model_label, exif_data, EXIF_TAG_MODEL); eom_exif_set_label (priv->exif_date_label, exif_data, EXIF_TAG_DATE_TIME_ORIGINAL); eom_exif_details_update (EOM_EXIF_DETAILS (priv->exif_details), exif_data); /* exif_data_unref can handle NULL-values */ exif_data_unref(exif_data); #endif #if HAVE_EXEMPI xmp_data = (XmpPtr) eom_image_get_xmp_info (image); if (xmp_data != NULL) { eom_xmp_set_label (xmp_data, NS_IPTC4XMP, "Location", priv->xmp_location_label); eom_xmp_set_label (xmp_data, NS_DC, "description", priv->xmp_description_label); eom_xmp_set_label (xmp_data, NS_DC, "subject", priv->xmp_keywords_label); eom_xmp_set_label (xmp_data, NS_DC, "creator", priv->xmp_creator_label); eom_xmp_set_label (xmp_data, NS_DC, "rights", priv->xmp_rights_label); eom_exif_details_xmp_update (EOM_EXIF_DETAILS (priv->exif_details), xmp_data); xmp_free (xmp_data); } else { /* Image has no XMP data */ /* Clear the labels so they won't display foreign data.*/ gtk_label_set_text (GTK_LABEL (priv->xmp_location_label), NULL); gtk_label_set_text (GTK_LABEL (priv->xmp_description_label), NULL); gtk_label_set_text (GTK_LABEL (priv->xmp_keywords_label), NULL); gtk_label_set_text (GTK_LABEL (priv->xmp_creator_label), NULL); gtk_label_set_text (GTK_LABEL (priv->xmp_rights_label), NULL); } #endif }