diff options
-rw-r--r-- | src/caja-image-properties-page.c | 101 |
1 files changed, 59 insertions, 42 deletions
diff --git a/src/caja-image-properties-page.c b/src/caja-image-properties-page.c index 344f8339..c1587663 100644 --- a/src/caja-image-properties-page.c +++ b/src/caja-image-properties-page.c @@ -53,12 +53,14 @@ struct _CajaImagePropertiesPagePrivate GCancellable *cancellable; GtkWidget *vbox; GtkWidget *loading_label; + GtkWidget *grid; GdkPixbufLoader *loader; gboolean got_size; gboolean pixbuf_still_loading; char buffer[LOAD_BUFFER_SIZE]; int width; int height; + int row; #ifdef HAVE_EXIF ExifLoader *exifldr; #endif /*HAVE_EXIF*/ @@ -157,16 +159,33 @@ append_label (GtkWidget *vbox, return label; } -static GtkWidget * -append_label_take_str (GtkWidget *vbox, - char *str) +static void +add_row (CajaImagePropertiesPage *page, + const char *col_name_str, + const char *col_value_str) { - GtkWidget *retval; + GtkWidget *label; + g_autofree char *value = NULL; - retval = append_label (vbox, str); - g_free (str); + value = g_strdup_printf (_("<b>%s:</b>"), col_name_str); + label = gtk_label_new (NULL); + gtk_label_set_markup (GTK_LABEL (label), value); + gtk_label_set_xalign (GTK_LABEL (label), 0); + gtk_label_set_yalign (GTK_LABEL (label), 0); + gtk_label_set_selectable (GTK_LABEL (label), TRUE); + gtk_widget_set_can_focus (label, FALSE); + + gtk_grid_attach (GTK_GRID (page->details->grid), label, 0, page->details->row, 1, 1); - return retval; + label = gtk_label_new (col_value_str); + gtk_label_set_xalign (GTK_LABEL (label), 0); + gtk_label_set_yalign (GTK_LABEL (label), 0); + gtk_label_set_selectable (GTK_LABEL (label), TRUE); + gtk_widget_set_can_focus (label, FALSE); + + gtk_grid_attach (GTK_GRID (page->details->grid), label, 1, page->details->row, 1, 1); + + page->details->row++; } #ifdef HAVE_EXIF @@ -258,11 +277,7 @@ append_tag_value_pair (CajaImagePropertiesPage *page, return FALSE; } - append_label_take_str - (page->details->vbox, - g_strdup_printf ("<b>%s:</b> %s", - description ? description : utf_attribute, - utf_value)); + add_row (page, description ? description : utf_attribute, utf_value); g_free (utf_attribute); g_free (utf_value); @@ -315,10 +330,7 @@ append_xmp_value_pair (CajaImagePropertiesPage *page, { if (XMP_IS_PROP_SIMPLE (options)) { - append_label_take_str - (page->details->vbox, - g_strdup_printf ("<b>%s:</b> %s", - descr, xmp_string_cstr (value))); + add_row (page, descr, xmp_string_cstr (value)); } else if (XMP_IS_PROP_ARRAY (options)) { @@ -329,11 +341,10 @@ append_xmp_value_pair (CajaImagePropertiesPage *page, { GString *str; gboolean first = TRUE; + char *value_str; str = g_string_new (NULL); - g_string_append_printf (str, "<b>%s:</b> ", - descr); while (xmp_iterator_next (iter, NULL, NULL, value, &options) && !XMP_IS_PROP_QUALIFIER(options)) { @@ -350,8 +361,9 @@ append_xmp_value_pair (CajaImagePropertiesPage *page, xmp_string_cstr(value)); } xmp_iterator_free(iter); - append_label_take_str (page->details->vbox, - g_string_free (str, FALSE)); + value_str = g_string_free (str, FALSE); + add_row (page, descr, value_str); + g_free (value_str); } } } @@ -386,33 +398,38 @@ load_finished (CajaImagePropertiesPage *page) if (page->details->got_size) { GdkPixbufFormat *format; - char *name, *desc; + g_autofree char *name = NULL; + g_autofree char *desc = NULL; + g_autofree char *value = NULL; #ifdef HAVE_EXIF ExifData *exif_data; #endif /*HAVE_EXIF*/ format = gdk_pixbuf_loader_get_format (page->details->loader); - name = gdk_pixbuf_format_get_name (format); desc = gdk_pixbuf_format_get_description (format); - append_label_take_str - (page->details->vbox, - g_strdup_printf ("<b>%s</b> %s (%s)", - _("Image Type:"), name, desc)); - append_label_take_str - (page->details->vbox, - g_strdup_printf (ngettext ("<b>Width:</b> %d pixel", - "<b>Width:</b> %d pixels", - page->details->width), - page->details->width)); - append_label_take_str - (page->details->vbox, - g_strdup_printf (ngettext ("<b>Height:</b> %d pixel", - "<b>Height:</b> %d pixels", - page->details->height), - page->details->height)); - g_free (name); - g_free (desc); + + page->details->grid = gtk_grid_new (); + gtk_grid_set_column_spacing (GTK_GRID (page->details->grid), 12); + gtk_grid_set_row_spacing (GTK_GRID (page->details->grid), 6); + gtk_container_set_border_width (GTK_CONTAINER (page->details->grid), 12); + gtk_box_pack_start (GTK_BOX (page->details->vbox), page->details->grid, TRUE, TRUE, 0); + page->details->row = 0; + + value = g_strdup_printf ("%s (%s)",name, desc); + add_row (page, _("Image Type"), value); + + value = g_strdup_printf (ngettext ("%d pixel", + "%d pixels", + page->details->width), + page->details->width); + add_row (page, _("Width"), value); + + value = g_strdup_printf (ngettext ("%d pixel", + "%d pixels", + page->details->height), + page->details->height); + add_row (page, _("Height"), value); #ifdef HAVE_EXIF exif_data = exif_loader_get_data (page->details->exifldr); @@ -422,6 +439,7 @@ load_finished (CajaImagePropertiesPage *page) #ifdef HAVE_EXEMPI append_xmpdata_string (page->details->xmp, page); #endif /*HAVE_EXEMPI*/ + gtk_widget_show_all (page->details->grid); } else { @@ -645,10 +663,9 @@ caja_image_properties_page_init (CajaImagePropertiesPage *page) gtk_orientable_set_orientation (GTK_ORIENTABLE (page), GTK_ORIENTATION_VERTICAL); gtk_box_set_homogeneous (GTK_BOX (page), FALSE); - gtk_box_set_spacing (GTK_BOX (page), 2); - gtk_container_set_border_width (GTK_CONTAINER (page), 6); page->details->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + page->details->loading_label = append_label (page->details->vbox,_("loading...")); gtk_box_pack_start (GTK_BOX (page), |