#include "ui-misc.h"
#include "ui-utildlg.h"
-enum {
- MIN_HEIGHT = 25
-};
+namespace
+{
+
+constexpr gint MIN_HEIGHT = 25;
+
/*
*-------------------------------------------------------------------
* EXIF widget
gboolean editable;
};
-static void bar_pane_exif_entry_dnd_init(GtkWidget *entry);
-static void bar_pane_exif_entry_update_title(ExifEntry *ee);
-static void bar_pane_exif_update(PaneExifData *ped);
-static gboolean bar_pane_exif_menu_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data);
-static void bar_pane_exif_notify_cb(FileData *fd, NotifyType type, gpointer data);
-static gboolean bar_pane_exif_copy_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data);
+void bar_pane_exif_entry_dnd_init(GtkWidget *entry);
+void bar_pane_exif_entry_update_title(ExifEntry *ee);
+void bar_pane_exif_update(PaneExifData *ped);
+gboolean bar_pane_exif_menu_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data);
+void bar_pane_exif_notify_cb(FileData *fd, NotifyType type, gpointer data);
+gboolean bar_pane_exif_copy_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data);
-static void bar_pane_exif_entry_changed(GtkEntry *, gpointer data)
+void bar_pane_exif_entry_changed(GtkEntry *, gpointer data)
{
auto ee = static_cast<ExifEntry *>(data);
gchar *text;
g_free(text);
}
-static void bar_pane_exif_entry_destroy(GtkWidget *, gpointer data)
+void bar_pane_exif_entry_destroy(GtkWidget *, gpointer data)
{
auto ee = static_cast<ExifEntry *>(data);
g_free(ee);
}
-static void bar_pane_exif_setup_entry_box(PaneExifData *ped, ExifEntry *ee)
+void bar_pane_exif_setup_entry_box(PaneExifData *ped, ExifEntry *ee)
{
gboolean horizontal = !ee->editable;
gboolean editable = ee->editable;
gtk_widget_show(ee->value_widget);
}
-static GtkWidget *bar_pane_exif_add_entry(PaneExifData *ped, const gchar *key, const gchar *title, gboolean if_set, gboolean editable)
+GtkWidget *bar_pane_exif_add_entry(PaneExifData *ped, const gchar *key, const gchar *title, gboolean if_set, gboolean editable)
{
auto ee = g_new0(ExifEntry, 1);
return ee->ebox;
}
-static void bar_pane_exif_reparent_entry(GtkWidget *entry, GtkWidget *pane)
+void bar_pane_exif_reparent_entry(GtkWidget *entry, GtkWidget *pane)
{
auto ped = static_cast<PaneExifData *>(g_object_get_data(G_OBJECT(pane), "pane_data"));
PaneExifData *old_ped;
gq_gtk_box_pack_start(GTK_BOX(ped->vbox), entry, FALSE, FALSE, 0);
}
-static void bar_pane_exif_entry_update_title(ExifEntry *ee)
+void bar_pane_exif_entry_update_title(ExifEntry *ee)
{
gchar *markup;
g_free(markup);
}
-static void bar_pane_exif_update_entry(PaneExifData *ped, GtkWidget *entry, gboolean update_title)
+void bar_pane_exif_update_entry(PaneExifData *ped, GtkWidget *entry, gboolean update_title)
{
gchar *text;
auto ee = static_cast<ExifEntry *>(g_object_get_data(G_OBJECT(entry), "entry_data"));
if (update_title) bar_pane_exif_entry_update_title(ee);
}
-static void bar_pane_exif_update(PaneExifData *ped)
+void bar_pane_exif_update(PaneExifData *ped)
{
GList *list;
GList *work;
gtk_widget_set_sensitive(ped->pane.title, !ped->all_hidden);
}
-static void bar_pane_exif_set_fd(GtkWidget *widget, FileData *fd)
+void bar_pane_exif_set_fd(GtkWidget *widget, FileData *fd)
{
PaneExifData *ped;
bar_pane_exif_update(ped);
}
-static gint bar_pane_exif_event(GtkWidget *bar, GdkEvent *event)
+gint bar_pane_exif_event(GtkWidget *bar, GdkEvent *event)
{
PaneExifData *ped;
gboolean ret = FALSE;
return ret;
}
-static void bar_pane_exif_notify_cb(FileData *fd, NotifyType type, gpointer data)
+void bar_pane_exif_notify_cb(FileData *fd, NotifyType type, gpointer data)
{
auto ped = static_cast<PaneExifData *>(data);
if ((type & (NOTIFY_REREAD | NOTIFY_CHANGE | NOTIFY_METADATA)) && fd == ped->fd)
*-------------------------------------------------------------------
*/
-static GtkTargetEntry bar_pane_exif_drag_types[] = {
+// @todo Use std::array
+constexpr GtkTargetEntry bar_pane_exif_drag_types[] = {
{ const_cast<gchar *>(TARGET_APP_EXIF_ENTRY_STRING), GTK_TARGET_SAME_APP, TARGET_APP_EXIF_ENTRY },
{ const_cast<gchar *>("text/plain"), 0, TARGET_TEXT_PLAIN }
};
-static gint n_exif_entry_drag_types = 2;
+constexpr gint n_exif_entry_drag_types = 2;
-static GtkTargetEntry bar_pane_exif_drop_types[] = {
+// @todo Use std::array
+constexpr GtkTargetEntry bar_pane_exif_drop_types[] = {
{ const_cast<gchar *>(TARGET_APP_EXIF_ENTRY_STRING), GTK_TARGET_SAME_APP, TARGET_APP_EXIF_ENTRY },
{ const_cast<gchar *>("text/plain"), 0, TARGET_TEXT_PLAIN }
};
-static gint n_exif_entry_drop_types = 2;
+constexpr gint n_exif_entry_drop_types = 2;
-static void bar_pane_exif_entry_dnd_get(GtkWidget *entry, GdkDragContext *,
+void bar_pane_exif_entry_dnd_get(GtkWidget *entry, GdkDragContext *,
GtkSelectionData *selection_data, guint info,
guint, gpointer)
{
}
-static void bar_pane_exif_dnd_receive(GtkWidget *pane, GdkDragContext *,
+void bar_pane_exif_dnd_receive(GtkWidget *pane, GdkDragContext *,
gint x, gint y,
GtkSelectionData *selection_data, guint info,
guint, gpointer)
gtk_box_reorder_child(GTK_BOX(ped->vbox), new_entry, pos);
}
-static void bar_pane_exif_entry_dnd_begin(GtkWidget *entry, GdkDragContext *context, gpointer)
+void bar_pane_exif_entry_dnd_begin(GtkWidget *entry, GdkDragContext *context, gpointer)
{
auto ee = static_cast<ExifEntry *>(g_object_get_data(G_OBJECT(entry), "entry_data"));
dnd_set_drag_label(entry, context, ee->key);
}
-static void bar_pane_exif_entry_dnd_end(GtkWidget *, GdkDragContext *, gpointer)
+void bar_pane_exif_entry_dnd_end(GtkWidget *, GdkDragContext *, gpointer)
{
}
-static void bar_pane_exif_entry_dnd_init(GtkWidget *entry)
+void bar_pane_exif_entry_dnd_init(GtkWidget *entry)
{
auto ee = static_cast<ExifEntry *>(g_object_get_data(G_OBJECT(entry), "entry_data"));
G_CALLBACK(bar_pane_exif_entry_dnd_end), ee);
}
-static void bar_pane_exif_dnd_init(GtkWidget *pane)
+void bar_pane_exif_dnd_init(GtkWidget *pane)
{
gtk_drag_dest_set(pane,
static_cast<GtkDestDefaults>(GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP),
G_CALLBACK(bar_pane_exif_dnd_receive), NULL);
}
-static void bar_pane_exif_edit_close_cb(GtkWidget *, gpointer data)
+void bar_pane_exif_edit_close_cb(GtkWidget *, gpointer data)
{
auto gd = static_cast<GenericDialog *>(data);
generic_dialog_close(gd);
}
-static void bar_pane_exif_edit_destroy_cb(GtkWidget *, gpointer data)
+void bar_pane_exif_edit_destroy_cb(GtkWidget *, gpointer data)
{
auto cdd = static_cast<ConfDialogData *>(data);
g_signal_handlers_disconnect_by_func(cdd->widget, (gpointer)(bar_pane_exif_edit_close_cb), cdd->gd);
g_free(cdd);
}
-static void bar_pane_exif_edit_cancel_cb(GenericDialog *, gpointer)
+void bar_pane_exif_edit_cancel_cb(GenericDialog *, gpointer)
{
}
-static void bar_pane_exif_edit_ok_cb(GenericDialog *, gpointer data)
+void bar_pane_exif_edit_ok_cb(GenericDialog *, gpointer data)
{
auto cdd = static_cast<ConfDialogData *>(data);
}
}
-static void bar_pane_exif_conf_dialog(GtkWidget *widget)
+void bar_pane_exif_conf_dialog(GtkWidget *widget)
{
ConfDialogData *cdd;
GenericDialog *gd;
gtk_widget_show(gd->dialog);
}
-static void bar_pane_exif_conf_dialog_cb(GtkWidget *, gpointer data)
+void bar_pane_exif_conf_dialog_cb(GtkWidget *, gpointer data)
{
auto widget = static_cast<GtkWidget *>(data);
bar_pane_exif_conf_dialog(widget);
}
-static void bar_pane_exif_delete_entry_cb(GtkWidget *, gpointer data)
+void bar_pane_exif_delete_entry_cb(GtkWidget *, gpointer data)
{
auto entry = static_cast<GtkWidget *>(data);
gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(entry)), entry);
}
#if HAVE_GTK4
-static void bar_pane_exif_copy_entry_cb(GtkWidget *, gpointer data)
+void bar_pane_exif_copy_entry_cb(GtkWidget *, gpointer data)
{
/* @FIXME GTK4 stub */
}
#else
-static void bar_pane_exif_copy_entry_cb(GtkWidget *, gpointer data)
+void bar_pane_exif_copy_entry_cb(GtkWidget *, gpointer data)
{
auto widget = static_cast<GtkWidget *>(data);
GtkClipboard *clipboard;
}
#endif
-static void bar_pane_exif_toggle_show_all_cb(GtkWidget *, gpointer data)
+void bar_pane_exif_toggle_show_all_cb(GtkWidget *, gpointer data)
{
auto ped = static_cast<PaneExifData *>(data);
ped->show_all = !ped->show_all;
bar_pane_exif_update(ped);
}
-static void bar_pane_exif_menu_popup(GtkWidget *widget, PaneExifData *ped)
+void bar_pane_exif_menu_popup(GtkWidget *widget, PaneExifData *ped)
{
GtkWidget *menu;
/* the widget can be either ExifEntry (for editing) or Pane (for new entry)
gtk_menu_popup_at_pointer(GTK_MENU(menu), nullptr);
}
-static gboolean bar_pane_exif_menu_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
+gboolean bar_pane_exif_menu_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
{
auto ped = static_cast<PaneExifData *>(data);
if (bevent->button == MOUSE_BUTTON_RIGHT)
}
#if HAVE_GTK4
-static gboolean bar_pane_exif_copy_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer)
+gboolean bar_pane_exif_copy_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer)
{
/* @FIXME GTK4 stub */
return FALSE;
}
#else
-static gboolean bar_pane_exif_copy_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer)
+gboolean bar_pane_exif_copy_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer)
{
const gchar *value;
GtkClipboard *clipboard;
}
#endif
-static void bar_pane_exif_entry_write_config(GtkWidget *entry, GString *outstr, gint indent)
+void bar_pane_exif_entry_write_config(GtkWidget *entry, GString *outstr, gint indent)
{
auto ee = static_cast<ExifEntry *>(g_object_get_data(G_OBJECT(entry), "entry_data"));
if (!ee) return;
WRITE_STRING("/>");
}
-static void bar_pane_exif_write_config(GtkWidget *pane, GString *outstr, gint indent)
+void bar_pane_exif_write_config(GtkWidget *pane, GString *outstr, gint indent)
{
PaneExifData *ped;
GList *work;
WRITE_NL(); WRITE_STRING("</pane_exif>");
}
-GList * bar_pane_exif_list()
-{
- PaneExifData *ped;
- GList *list;
- GList *work_windows;
- GList *exif_list = nullptr;
- LayoutWindow *lw;
- GtkWidget *bar;
- GtkWidget *pane;
- GtkWidget *entry;
- ExifEntry *ee;
-
- work_windows = layout_window_list;
- lw = static_cast<LayoutWindow *>(work_windows->data);
- bar = lw->bar;
- pane = bar_find_pane_by_id(bar, PANE_EXIF, "exif");
- if (pane)
- {
- ped = static_cast<PaneExifData *>(g_object_get_data(G_OBJECT(pane), "pane_data"));
-
- list = gtk_container_get_children(GTK_CONTAINER(ped->vbox));
- GList *work = list;
- while (work)
- {
- entry = static_cast<GtkWidget *>(work->data);
- work = work->next;
- ee = static_cast<ExifEntry *>(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;
-}
-
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wunused-function"
-void bar_pane_exif_close_unused(GtkWidget *widget)
-{
- PaneExifData *ped;
-
- ped = static_cast<PaneExifData *>(g_object_get_data(G_OBJECT(widget), "pane_data"));
- if (!ped) return;
-
- g_object_unref(ped->vbox);
-}
-#pragma GCC diagnostic pop
-
-static void bar_pane_exif_destroy(GtkWidget *, gpointer data)
+void bar_pane_exif_destroy(GtkWidget *, gpointer data)
{
auto ped = static_cast<PaneExifData *>(data);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
-static void bar_pane_exif_size_request_unused(GtkWidget *, GtkRequisition *requisition, gpointer data)
+void bar_pane_exif_size_request_unused(GtkWidget *, GtkRequisition *requisition, gpointer data)
{
auto *ped = static_cast<PaneExifData *>(data);
if (requisition->height < ped->min_height)
}
#pragma GCC diagnostic pop
-static void bar_pane_exif_size_allocate(GtkWidget *, GtkAllocation *alloc, gpointer data)
+void bar_pane_exif_size_allocate(GtkWidget *, GtkAllocation *alloc, gpointer data)
{
auto ped = static_cast<PaneExifData *>(data);
ped->min_height = alloc->height;
gtk_widget_set_size_request(ped->widget, -1, ped->min_height);
}
-static GtkWidget *bar_pane_exif_new(const gchar *id, const gchar *title, gboolean expanded, gboolean show_all)
+GtkWidget *bar_pane_exif_new(const gchar *id, const gchar *title, gboolean expanded, gboolean show_all)
{
PaneExifData *ped;
return ped->widget;
}
+} // namespace
+
+GList * bar_pane_exif_list()
+{
+ PaneExifData *ped;
+ GList *list;
+ GList *work_windows;
+ GList *exif_list = nullptr;
+ LayoutWindow *lw;
+ GtkWidget *bar;
+ GtkWidget *pane;
+ GtkWidget *entry;
+ ExifEntry *ee;
+
+ work_windows = layout_window_list;
+ lw = static_cast<LayoutWindow *>(work_windows->data);
+ bar = lw->bar;
+ pane = bar_find_pane_by_id(bar, PANE_EXIF, "exif");
+ if (pane)
+ {
+ ped = static_cast<PaneExifData *>(g_object_get_data(G_OBJECT(pane), "pane_data"));
+
+ list = gtk_container_get_children(GTK_CONTAINER(ped->vbox));
+ GList *work = list;
+ while (work)
+ {
+ entry = static_cast<GtkWidget *>(work->data);
+ work = work->next;
+ ee = static_cast<ExifEntry *>(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;
+}
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+void bar_pane_exif_close_unused(GtkWidget *widget)
+{
+ PaneExifData *ped;
+
+ ped = static_cast<PaneExifData *>(g_object_get_data(G_OBJECT(widget), "pane_data"));
+ if (!ped) return;
+
+ g_object_unref(ped->vbox);
+}
+#pragma GCC diagnostic pop
+
GtkWidget *bar_pane_exif_new_from_config(const gchar **attribute_names, const gchar **attribute_values)
{
gchar *title = nullptr;