Add file class Archive to the Search page
[geeqie.git] / src / advanced-exif.cc
index 250d95a..e271c42 100644 (file)
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#include "main.h"
 #include "advanced-exif.h"
 
+#include <cstring>
+
+#include <gdk/gdk.h>
+#include <glib-object.h>
+#include <glib.h>
+#include <pango/pango.h>
+
+#include <config.h>
+
+#include "compat.h"
+#include "debug.h"
+#include "dnd.h"
 #include "exif.h"
 #include "filedata.h"
 #include "history-list.h"
+#include "intl.h"
 #include "layout-util.h"
+#include "layout.h"
 #include "misc.h"
+#include "options.h"
 #include "ui-misc.h"
 #include "window.h"
-#include "dnd.h"
 
-#define ADVANCED_EXIF_DATA_COLUMN_WIDTH 200
+struct ExifData;
+struct ExifItem;
+
+enum {
+       ADVANCED_EXIF_DATA_COLUMN_WIDTH = 200
+};
 
 /*
  *-------------------------------------------------------------------
@@ -39,8 +57,7 @@
  *-------------------------------------------------------------------
  */
 
-typedef struct _ExifWin ExifWin;
-struct _ExifWin
+struct ExifWin
 {
        GtkWidget *window;
        GtkWidget *vbox;
@@ -121,7 +138,7 @@ static void advanced_exif_update(ExifWin *ew)
                tag = g_strdup_printf("0x%04x", exif_item_get_tag_id(item));
                tag_name = exif_item_get_tag_name(item);
                format = exif_item_get_format_name(item, TRUE);
-               text = exif_item_get_data_as_text(item);
+               text = exif_item_get_data_as_text(item, exif);
                utf8_text = utf8_validate_or_convert(text);
                g_free(text);
                elements = g_strdup_printf("%d", exif_item_get_elements(item));
@@ -183,35 +200,32 @@ static GtkTargetEntry advanced_exif_drag_types[] = {
 static gint n_exif_drag_types = 1;
 
 
-static void advanced_exif_dnd_get(GtkWidget *listview, GdkDragContext *UNUSED(context),
-                                 GtkSelectionData *selection_data, guint UNUSED(info),
-                                 guint UNUSED(time), gpointer UNUSED(data))
+static void advanced_exif_dnd_get(GtkWidget *listview, GdkDragContext *,
+                                 GtkSelectionData *selection_data,
+                                 guint, guint, gpointer)
 {
-       //ExifWin *ew = static_cast<//ExifWin *>(data);
        GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(listview));
        GtkTreeIter iter;
 
-       if (gtk_tree_selection_get_selected(sel, NULL, &iter))
+       if (gtk_tree_selection_get_selected(sel, nullptr, &iter))
                {
                GtkTreeModel *store = gtk_tree_view_get_model(GTK_TREE_VIEW(listview));
                gchar *key;
 
                gtk_tree_model_get(store, &iter, EXIF_ADVCOL_NAME, &key, -1);
                gtk_selection_data_set_text(selection_data, key, -1);
-               //printf("%s\n",key);
                g_free(key);
                }
 
 }
 
 
-static void advanced_exif_dnd_begin(GtkWidget *listview, GdkDragContext *context, gpointer UNUSED(data))
+static void advanced_exif_dnd_begin(GtkWidget *listview, GdkDragContext *context, gpointer)
 {
-       //ExifWin *ew = static_cast<//ExifWin *>(data);
        GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(listview));
        GtkTreeIter iter;
 
-       if (gtk_tree_selection_get_selected(sel, NULL, &iter))
+       if (gtk_tree_selection_get_selected(sel, nullptr, &iter))
                {
                GtkTreeModel *store = gtk_tree_view_get_model(GTK_TREE_VIEW(listview));
                gchar *key;
@@ -255,7 +269,7 @@ static void advanced_exif_add_column(GtkWidget *listview, const gchar *title, gi
 static void advanced_exif_window_get_geometry(ExifWin *ew)
 {
        GdkWindow *window;
-       LayoutWindow *lw = NULL;
+       LayoutWindow *lw = nullptr;
 
        layout_valid(&lw);
 
@@ -274,12 +288,12 @@ void advanced_exif_close(ExifWin *ew)
        advanced_exif_window_get_geometry(ew);
        file_data_unref(ew->fd);
 
-       gtk_widget_destroy(ew->window);
+       gq_gtk_widget_destroy(ew->window);
 
        g_free(ew);
 }
 
-static gboolean advanced_exif_delete_cb(GtkWidget *UNUSED(widget), GdkEvent *UNUSED(event), gpointer data)
+static gboolean advanced_exif_delete_cb(GtkWidget *, GdkEvent *, gpointer data)
 {
        auto ew = static_cast<ExifWin *>(data);
 
@@ -307,7 +321,8 @@ static gint advanced_exif_sort_cb(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIt
                case EXIF_ADVCOL_FORMAT:
                case EXIF_ADVCOL_ELEMENTS:
                        {
-                       gchar *s1, *s2;
+                       gchar *s1;
+                       gchar *s2;
 
                        gtk_tree_model_get(model, a, n, &s1, -1);
                        gtk_tree_model_get(model, b, n, &s2, -1);
@@ -334,8 +349,14 @@ static gint advanced_exif_sort_cb(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIt
        return ret;
 }
 
-static gboolean advanced_exif_mouseclick(GtkWidget *UNUSED(widget),
-                                               GdkEventButton *UNUSED(bevent), gpointer data)
+#if HAVE_GTK4
+static gboolean advanced_exif_mouseclick(GtkWidget *, GdkEventButton *, gpointer data)
+{
+/* @FIXME GTK4 stub */
+       return TRUE;
+}
+#else
+static gboolean advanced_exif_mouseclick(GtkWidget *, GdkEventButton *, gpointer data)
 {
        auto ew = static_cast<ExifWin *>(data);
        GtkTreePath *path;
@@ -368,8 +389,9 @@ static gboolean advanced_exif_mouseclick(GtkWidget *UNUSED(widget),
 
        return TRUE;
 }
+#endif
 
-static gboolean advanced_exif_keypress(GtkWidget *UNUSED(widget), GdkEventKey *event, gpointer data)
+static gboolean advanced_exif_keypress(GtkWidget *, GdkEventKey *event, gpointer data)
 {
        auto ew = static_cast<ExifWin *>(data);
        gboolean stop_signal = FALSE;
@@ -391,9 +413,9 @@ static gboolean advanced_exif_keypress(GtkWidget *UNUSED(widget), GdkEventKey *e
                }
 
        return stop_signal;
-} // static gboolean advanced_exif_...
+}
 
-static gboolean search_function_cb(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer UNUSED(data))
+static gboolean search_function_cb(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer)
 {
        gboolean ret = TRUE;
        gchar *field_contents;
@@ -428,26 +450,26 @@ GtkWidget *advanced_exif_new(LayoutWindow *lw)
 
        ew = g_new0(ExifWin, 1);
 
-       ew->window = window_new(GTK_WINDOW_TOPLEVEL, "view", NULL, NULL, _("Metadata"));
+       ew->window = window_new("view", nullptr, nullptr, _("Metadata"));
        DEBUG_NAME(ew->window);
 
        geometry.min_width = 900;
        geometry.min_height = 600;
-       gtk_window_set_geometry_hints(GTK_WINDOW(ew->window), NULL, &geometry, GDK_HINT_MIN_SIZE);
+       gtk_window_set_geometry_hints(GTK_WINDOW(ew->window), nullptr, &geometry, GDK_HINT_MIN_SIZE);
 
        gtk_window_set_resizable(GTK_WINDOW(ew->window), TRUE);
 
        gtk_window_resize(GTK_WINDOW(ew->window), lw->options.advanced_exif_window.w, lw->options.advanced_exif_window.h);
        if (lw->options.advanced_exif_window.x != 0 && lw->options.advanced_exif_window.y != 0)
                {
-               gtk_window_move(GTK_WINDOW(ew->window), lw->options.advanced_exif_window.x, lw->options.advanced_exif_window.y);
+               gq_gtk_window_move(GTK_WINDOW(ew->window), lw->options.advanced_exif_window.x, lw->options.advanced_exif_window.y);
                }
 
        g_object_set_data(G_OBJECT(ew->window), "advanced_exif_data", ew);
        g_signal_connect(G_OBJECT(ew->window), "delete_event", G_CALLBACK(advanced_exif_delete_cb), ew);
 
        ew->vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, PREF_PAD_GAP);
-       gtk_container_add(GTK_CONTAINER(ew->window), ew->vbox);
+       gq_gtk_container_add(GTK_WIDGET(ew->window), ew->vbox);
        gtk_widget_show(ew->vbox);
 
        box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
@@ -458,10 +480,10 @@ GtkWidget *advanced_exif_new(LayoutWindow *lw)
        gtk_label_set_xalign(GTK_LABEL(ew->label_file_name), 0.5);
        gtk_label_set_yalign(GTK_LABEL(ew->label_file_name), 0.5);
 
-       gtk_box_pack_start(GTK_BOX(box), ew->label_file_name, TRUE, TRUE, 0);
+       gq_gtk_box_pack_start(GTK_BOX(box), ew->label_file_name, TRUE, TRUE, 0);
        gtk_widget_show(ew->label_file_name);
 
-       gtk_box_pack_start(GTK_BOX(ew->vbox), box, FALSE, FALSE, 0);
+       gq_gtk_box_pack_start(GTK_BOX(ew->vbox), box, FALSE, FALSE, 0);
        gtk_widget_show(box);
 
 
@@ -473,7 +495,7 @@ GtkWidget *advanced_exif_new(LayoutWindow *lw)
        sortable = GTK_TREE_SORTABLE(store);
        for (n = EXIF_ADVCOL_DESCRIPTION; n <= EXIF_ADVCOL_ELEMENTS; n++)
                gtk_tree_sortable_set_sort_func(sortable, n, advanced_exif_sort_cb,
-                                               GINT_TO_POINTER(n), NULL);
+                                               GINT_TO_POINTER(n), nullptr);
 
        /* set initial sort order */
        gtk_tree_sortable_set_sort_column_id(sortable, EXIF_ADVCOL_NAME, GTK_SORT_ASCENDING);
@@ -481,7 +503,6 @@ GtkWidget *advanced_exif_new(LayoutWindow *lw)
        ew->listview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
        g_object_unref(store);
 
-       gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(ew->listview), TRUE);
        gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(ew->listview), TRUE);
 
        advanced_exif_add_column(ew->listview, _("Description"), EXIF_ADVCOL_DESCRIPTION, FALSE);
@@ -493,7 +514,7 @@ GtkWidget *advanced_exif_new(LayoutWindow *lw)
 
        gtk_tree_view_set_enable_search(GTK_TREE_VIEW(ew->listview), TRUE);
        gtk_tree_view_set_search_column(GTK_TREE_VIEW(ew->listview), EXIF_ADVCOL_DESCRIPTION);
-       gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(ew->listview), search_function_cb, ew, NULL);
+       gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(ew->listview), search_function_cb, ew, nullptr);
 
        gtk_drag_source_set(ew->listview,
                           static_cast<GdkModifierType>(GDK_BUTTON1_MASK | GDK_BUTTON2_MASK),
@@ -512,12 +533,12 @@ GtkWidget *advanced_exif_new(LayoutWindow *lw)
        g_signal_connect(G_OBJECT(ew->listview), "button_release_event",
                        G_CALLBACK(advanced_exif_mouseclick), ew);
 
-       ew->scrolled = gtk_scrolled_window_new(NULL, NULL);
-       gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(ew->scrolled), GTK_SHADOW_IN);
+       ew->scrolled = gq_gtk_scrolled_window_new(nullptr, nullptr);
+       gq_gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(ew->scrolled), GTK_SHADOW_IN);
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ew->scrolled),
                                       GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
-       gtk_box_pack_start(GTK_BOX(ew->vbox), ew->scrolled, TRUE, TRUE, 0);
-       gtk_container_add(GTK_CONTAINER(ew->scrolled), ew->listview);
+       gq_gtk_box_pack_start(GTK_BOX(ew->vbox), ew->scrolled, TRUE, TRUE, 0);
+       gq_gtk_container_add(GTK_WIDGET(ew->scrolled), ew->listview);
        gtk_widget_show(ew->listview);
        gtk_widget_show(ew->scrolled);