void _gtk_print_save_custom_papers (GtkListStore *store) { GtkTreeModel *model = GTK_TREE_MODEL (store); GtkTreeIter iter; GKeyFile *keyfile; gchar *filename, *data; gsize len; gint i = 0; keyfile = g_key_file_new (); if (gtk_tree_model_get_iter_first (model, &iter)) { do { GtkPageSetup *page_setup; gchar group[32]; g_snprintf (group, sizeof (group), "Paper%u", i); gtk_tree_model_get (model, &iter, 0, &page_setup, -1); gtk_page_setup_to_key_file (page_setup, keyfile, group); ++i; } while (gtk_tree_model_iter_next (model, &iter)); } filename = custom_paper_get_filename (); data = g_key_file_to_data (keyfile, &len, NULL); g_file_set_contents (filename, data, len, NULL); g_free (data); g_free (filename); }
GList * _gtk_load_custom_papers (void) { GKeyFile *keyfile; gchar *filename; gchar **groups; gsize n_groups, i; gboolean load_ok; GList *result = NULL; filename = custom_paper_get_filename (); keyfile = g_key_file_new (); load_ok = g_key_file_load_from_file (keyfile, filename, 0, NULL); g_free (filename); if (!load_ok) { /* try legacy file */ filename = custom_paper_get_legacy_filename (); load_ok = g_key_file_load_from_file (keyfile, filename, 0, NULL); g_free (filename); } if (!load_ok) { g_key_file_free (keyfile); return NULL; } groups = g_key_file_get_groups (keyfile, &n_groups); for (i = 0; i < n_groups; ++i) { GtkPageSetup *page_setup; page_setup = gtk_page_setup_new_from_key_file (keyfile, groups[i], NULL); if (!page_setup) continue; result = g_list_prepend (result, page_setup); } g_strfreev (groups); g_key_file_free (keyfile); return g_list_reverse (result); }