gboolean metadata_write_int(FileData *fd, const gchar *key, guint64 value) { gchar string[50]; g_snprintf(string, sizeof(string), "%llu", (unsigned long long) value); return metadata_write_string(fd, key, string); }
static void bar_pane_comment_set_selection(PaneCommentData *pcd, gboolean append) { GList *list = NULL; GList *work; gchar *comment = NULL; comment = text_widget_text_pull(pcd->comment_view); list = layout_selection_list(pcd->pane.lw); list = file_data_process_groups_in_selection(list, FALSE, NULL); work = list; while (work) { FileData *fd = work->data; work = work->next; if (fd == pcd->fd) continue; if (append) { metadata_append_string(fd, pcd->key, comment); } else { metadata_write_string(fd, pcd->key, comment); } } filelist_free(list); g_free(comment); }
gboolean metadata_append_string(FileData *fd, const gchar *key, const char *value) { gchar *str = metadata_read_string(fd, key, METADATA_PLAIN); if (!str) { return metadata_write_string(fd, key, value); } else { gchar *new_string = g_strconcat(str, value, NULL); gboolean ret = metadata_write_string(fd, key, new_string); g_free(str); g_free(new_string); return ret; } }
static void bar_pane_exif_entry_changed(GtkEntry *text_entry, gpointer data) { ExifEntry *ee = data; gchar *text; if (!ee->ped->fd) return; text = text_widget_text_pull(ee->value_widget); metadata_write_string(ee->ped->fd, ee->key, text); g_free(text); }
static void bar_pane_comment_write(PaneCommentData *pcd) { gchar *comment; if (!pcd->fd) return; comment = text_widget_text_pull(pcd->comment_view); metadata_write_string(pcd->fd, pcd->key, comment); g_free(comment); }
gboolean metadata_write_GPS_coord(FileData *fd, const gchar *key, gdouble value) { gint deg; gdouble min; gdouble param; char *coordinate; char *ref; gboolean ok = TRUE; param = value; if (param < 0) param = -param; deg = param; min = (param * 60) - (deg * 60); if (g_strcmp0(key, "Xmp.exif.GPSLongitude") == 0) if (value < 0) ref = "W"; else ref = "E"; else if (g_strcmp0(key, "Xmp.exif.GPSLatitude") == 0) if (value < 0) ref = "S"; else ref = "N"; else { log_printf("unknown GPS parameter key '%s'\n", key); ok = FALSE; } if (ok) { coordinate = g_strdup_printf("%i,%lf,%s", deg, min, ref); metadata_write_string(fd, key, coordinate ); g_free(coordinate); } return ok; }