static void catalog_ready_cb (GObject *object, GError *error, gpointer user_data) { DialogData *data = user_data; if (error != NULL) { _gtk_error_dialog_from_gerror_show (GTK_WINDOW(data->browser), _("Could not load the catalog"), error); gtk_widget_destroy (data->dialog); return; } data->catalog = g_object_ref (object); if (gth_catalog_get_name (data->catalog) != NULL) { gtk_entry_set_text (GTK_ENTRY (GET_WIDGET ("name_entry")), gth_catalog_get_name (data->catalog)); } else if (! gth_datetime_valid_date (gth_catalog_get_date (data->catalog))) { char *basename; char *name; char *utf8_name; basename = g_file_get_basename (data->file_data->file); name = _g_uri_remove_extension (basename); utf8_name = g_filename_to_utf8 (name, -1, NULL, NULL, NULL); gtk_entry_set_text (GTK_ENTRY (GET_WIDGET ("name_entry")), utf8_name); g_free (utf8_name); g_free (name); g_free (basename); } gth_time_selector_set_value (GTH_TIME_SELECTOR (data->time_selector), gth_catalog_get_date (data->catalog)); gth_hook_invoke ("dlg-catalog-properties", data->builder, data->file_data, data->catalog); gtk_widget_show (data->dialog); g_object_unref (object); }
static void save_catalogs (GthOrganizeTask *self) { GtkTreeIter iter; if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->priv->results_liststore), &iter)) { do { char *key; char *name; gboolean create; gtk_tree_model_get (GTK_TREE_MODEL (self->priv->results_liststore), &iter, KEY_COLUMN, &key, NAME_COLUMN, &name, CREATE_CATALOG_COLUMN, &create, -1); if (create) { GthCatalog *catalog; char *original_name; catalog = g_hash_table_lookup (self->priv->catalogs, key); /* remove the name if it is equal to the date * to avoid a duplication in the display-name * attribute. */ original_name = gth_datetime_strftime (gth_catalog_get_date (catalog), "%x"); if (g_strcmp0 (original_name, name) != 0) gth_catalog_set_name (catalog, name); else gth_catalog_set_name (catalog, NULL); g_free (original_name); } else g_hash_table_remove (self->priv->catalogs, key); g_free (name); g_free (key); } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (self->priv->results_liststore), &iter)); } g_hash_table_foreach (self->priv->catalogs, save_catalog, NULL); gth_task_completed (GTH_TASK (self), NULL); }