gtk_file_chooser_set_filename does not save but only sets the filename field on the dialog window (of no practical use placed after the dialog_run call). It also returns a boolean so I'm surprised you haven't picked up on a warning at least when compiling.
To get your code to save, modify to the following (where statusbar and window are setup in main -- I have also changed the button order to put save in the bottom right which is the more commonly seen amongst GTK apps):
Code:
GtkWidget *statusbar, *window;
static void rename_file(GtkWidget *widget, gpointer data)
{
gchar *fname=NULL, *str;
GError *Err=NULL;
GtkWidget *dialog;
dialog=gtk_file_chooser_dialog_new("Save File", GTK_WINDOW(window), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
{
fname=gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
/*insert code to put data to be saved into cts*/
g_file_set_contents(fname, cts, -1, &Err);
g_free(cts);
if (Err)
{
str=g_strdup_printf(_("Error Saving file: %s."), (Err->message));
gtk_statusbar_push(GTK_STATUSBAR(statusbar), gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), str), str);
{g_free(str); g_error_free(Err);}
}
g_free(fname);
}
gtk_widget_destroy(dialog);
}