Include a Other Software section in Help file
[geeqie.git] / src / bar_exif.c
index 5b298f9..fdc6271 100644 (file)
@@ -132,7 +132,12 @@ static void bar_pane_exif_setup_entry_box(PaneExifData *ped, ExifEntry *ee)
        gtk_widget_show(ee->box);
 
        ee->title_label = gtk_label_new(NULL);
+#if GTK_CHECK_VERSION(3,16,0)
+       gtk_label_set_xalign(GTK_LABEL(ee->title_label), horizontal ? 1.0 : 0.0);
+       gtk_label_set_yalign(GTK_LABEL(ee->title_label), 0.5);
+#else
        gtk_misc_set_alignment(GTK_MISC(ee->title_label), horizontal ? 1.0 : 0.0, 0.5);
+#endif
        gtk_size_group_add_widget(ped->size_group, ee->title_label);
        gtk_box_pack_start(GTK_BOX(ee->box), ee->title_label, FALSE, TRUE, 0);
        gtk_widget_show(ee->title_label);
@@ -150,7 +155,12 @@ static void bar_pane_exif_setup_entry_box(PaneExifData *ped, ExifEntry *ee)
 //             gtk_label_set_width_chars(GTK_LABEL(ee->value_widget), 20);
                gtk_label_set_ellipsize(GTK_LABEL(ee->value_widget), PANGO_ELLIPSIZE_END);
 //             gtk_widget_set_size_request(ee->value_widget, 100, -1);
+#if GTK_CHECK_VERSION(3,16,0)
+               gtk_label_set_xalign(GTK_LABEL(ee->value_widget), 0.0);
+               gtk_label_set_yalign(GTK_LABEL(ee->value_widget), 0.5);
+#else
                gtk_misc_set_alignment(GTK_MISC(ee->value_widget), 0.0, 0.5);
+#endif
                }
 
        gtk_box_pack_start(GTK_BOX(ee->box), ee->value_widget, TRUE, TRUE, 1);
@@ -229,9 +239,18 @@ static void bar_pane_exif_update_entry(PaneExifData *ped, GtkWidget *entry, gboo
 {
        gchar *text;
        ExifEntry *ee = g_object_get_data(G_OBJECT(entry), "entry_data");
+       gshort rating;
 
        if (!ee) return;
-       text = metadata_read_string(ped->fd, ee->key, ee->editable ? METADATA_PLAIN : METADATA_FORMATTED);
+       if (g_strcmp0(ee->key, "Xmp.xmp.Rating") == 0)
+               {
+               rating = metadata_read_int(ee->ped->fd, ee->key, 0);
+               text = g_strdup_printf("%d", rating);
+               }
+       else
+               {
+               text = metadata_read_string(ped->fd, ee->key, ee->editable ? METADATA_PLAIN : METADATA_FORMATTED);
+               }
 
        if (!ped->show_all && ee->if_set && !ee->editable && (!text || !*text))
                {
@@ -390,7 +409,7 @@ static void bar_pane_exif_dnd_receive(GtkWidget *pane, GdkDragContext *context,
 
                        break;
                default:
-                       /* FIXME: this needs a check for valid exif keys */
+                       /** @FIXME this needs a check for valid exif keys */
                        new_entry = bar_pane_exif_add_entry(ped, (gchar *)gtk_selection_data_get_data(selection_data), NULL, TRUE, FALSE);
                        break;
                }
@@ -709,6 +728,7 @@ static void bar_pane_exif_write_config(GtkWidget *pane, GString *outstr, gint in
        write_char_option(outstr, indent, "id", ped->pane.id);
        write_char_option(outstr, indent, "title", gtk_label_get_text(GTK_LABEL(ped->pane.title)));
        WRITE_BOOL(ped->pane, expanded);
+       WRITE_BOOL(*ped, show_all);
        WRITE_STRING(">");
        indent++;
 
@@ -742,20 +762,22 @@ GList * bar_pane_exif_list()
        lw = work_windows->data;
        bar = lw->bar;
        pane = bar_find_pane_by_id(bar, PANE_EXIF, "exif");
-       ped = g_object_get_data(G_OBJECT(pane), "pane_data");
-
-       list = gtk_container_get_children(GTK_CONTAINER(ped->vbox));
-       while (list)
+       if (pane)
                {
-               entry = list->data;
-               list = list->next;
-               ee = g_object_get_data(G_OBJECT(entry), "entry_data");
-               exif_list = g_list_append(exif_list, g_strdup(ee->title));
-               exif_list = g_list_append(exif_list, g_strdup(ee->key));
-               }
+               ped = g_object_get_data(G_OBJECT(pane), "pane_data");
 
-       g_list_free(list);
+               list = gtk_container_get_children(GTK_CONTAINER(ped->vbox));
+               while (list)
+                       {
+                       entry = list->data;
+                       list = list->next;
+                       ee = g_object_get_data(G_OBJECT(entry), "entry_data");
+                       exif_list = g_list_append(exif_list, g_strdup(ee->title));
+                       exif_list = g_list_append(exif_list, g_strdup(ee->key));
+                       }
 
+               g_list_free(list);
+               }
        return exif_list;
 }
 
@@ -800,7 +822,7 @@ static void bar_pane_exif_size_allocate(GtkWidget *pane, GtkAllocation *alloc, g
 #endif
 }
 
-static GtkWidget *bar_pane_exif_new(const gchar *id, const gchar *title, gboolean expanded)
+static GtkWidget *bar_pane_exif_new(const gchar *id, const gchar *title, gboolean expanded, gboolean show_all)
 {
        PaneExifData *ped;
 
@@ -813,6 +835,7 @@ static GtkWidget *bar_pane_exif_new(const gchar *id, const gchar *title, gboolea
        ped->pane.id = g_strdup(id);
        ped->pane.expanded = expanded;
        ped->pane.type = PANE_EXIF;
+       ped->show_all = show_all;
 
        ped->size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
        ped->widget = gtk_event_box_new();
@@ -848,6 +871,7 @@ GtkWidget *bar_pane_exif_new_from_config(const gchar **attribute_names, const gc
        gchar *title = NULL;
        gchar *id = g_strdup("exif");
        gboolean expanded = TRUE;
+       gboolean show_all = FALSE;
        GtkWidget *ret;
 
        while (*attribute_names)
@@ -858,12 +882,13 @@ GtkWidget *bar_pane_exif_new_from_config(const gchar **attribute_names, const gc
                if (READ_CHAR_FULL("id", id)) continue;
                if (READ_CHAR_FULL("title", title)) continue;
                if (READ_BOOL_FULL("expanded", expanded)) continue;
+               if (READ_BOOL_FULL("show_all", show_all)) continue;
 
                log_printf("unknown attribute %s = %s\n", option, value);
                }
 
        bar_pane_translate_title(PANE_EXIF, id, &title);
-       ret = bar_pane_exif_new(id, title, expanded);
+       ret = bar_pane_exif_new(id, title, expanded, show_all);
        g_free(title);
        g_free(id);
        return ret;
@@ -884,6 +909,7 @@ void bar_pane_exif_update_from_config(GtkWidget *pane, const gchar **attribute_n
 
                if (READ_CHAR_FULL("title", title)) continue;
                if (READ_BOOL_FULL("expanded", ped->pane.expanded)) continue;
+               if (READ_BOOL_FULL("show_all", ped->show_all)) continue;
                if (READ_CHAR_FULL("id", ped->pane.id)) continue;