diff src/gtkdebug.c @ 9489:85caa0722dfc

[gaim-migrate @ 10314] Conversation->Save as... uses the gtk 2.4 file chooser now. And I made a few more tweaks to the debug window save dialog. This code should be pretty diesel. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Fri, 09 Jul 2004 00:36:35 +0000
parents 59d986a931d4
children d95e134da0ac
line wrap: on
line diff
--- a/src/gtkdebug.c	Thu Jul 08 18:45:01 2004 +0000
+++ b/src/gtkdebug.c	Fri Jul 09 00:36:35 2004 +0000
@@ -73,8 +73,11 @@
 {
 	if (debug_win->timestamps_handle != 0)
 		gaim_prefs_disconnect_callback(debug_win->timestamps_handle);
-	if (debug_win->save != NULL)
+	if (debug_win->save != NULL) {
+		gaim_notify_close_with_handle(debug_win->save);
+		gaim_request_close_with_handle(debug_win->save);
 		gtk_widget_destroy(debug_win->save);
+	}
 
 	g_free(debug_win);
 	debug_win = NULL;
@@ -172,41 +175,39 @@
 }
 
 static void
-save_writefile_cb(GtkWidget *widget)
+save_writefile_cb(DebugWindow *win, gint id)
 {
 	const char *filename;
+	FILE *fp;
 	char *tmp;
-	FILE *fp;
-
-	g_return_if_fail(debug_win != NULL);
 
 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
-	filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(debug_win->save));
+	filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(win->save));
 #else /* FILECHOOSER */
-	filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(debug_win->save));
+	filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(win->save));
 #endif /* FILECHOOSER */
 
-	gaim_notify_close_with_handle(debug_win->save);
+	gaim_notify_close_with_handle(win->save);
 
 	if (filename == NULL) {
-		gaim_notify_error(debug_win->save, NULL, _("Invalid file name."), NULL);
+		gaim_notify_error(win->save, NULL, _("Invalid file name."), NULL);
 		return;
 	}
 
 	if ((fp = fopen(filename, "w+")) == NULL) {
-		gaim_notify_error(debug_win->save, NULL, _("Unable to open file."), NULL);
+		gaim_notify_error(win->save, NULL, _("Unable to open file."), NULL);
 		return;
 	}
 
-	tmp = gtk_imhtml_get_text(GTK_IMHTML(debug_win->text), NULL, NULL);
+	tmp = gtk_imhtml_get_text(GTK_IMHTML(win->text), NULL, NULL);
 	fprintf(fp, "Gaim Debug log : %s\n", gaim_date_full());
 	fprintf(fp, "%s", tmp);
 	g_free(tmp);
 
 	fclose(fp);
 
-	gtk_widget_destroy(debug_win->save);
-	debug_win->save = NULL;
+	gtk_widget_destroy(win->save);
+	win->save = NULL;
 }
 
 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
@@ -216,6 +217,8 @@
 	const char *filename;
 
 	if (response != GTK_RESPONSE_ACCEPT) {
+		gaim_notify_close_with_handle(win->save);
+		gaim_request_close_with_handle(win->save);
 		if (response == GTK_RESPONSE_CANCEL)
 			gtk_widget_destroy(win->save);
 		win->save = NULL;
@@ -236,25 +239,28 @@
 	}
 #endif /* FILECHOOSER */
 
+	gaim_request_close_with_handle(win->save);
+
 	if (g_file_test(filename, G_FILE_TEST_EXISTS))
 	{
-		gaim_request_close_with_handle(win->save);
 		gaim_request_yes_no(win->save, NULL, _("That file already exists"),
 							_("Would you like to overwrite it?"), 1,
-							win->save, G_CALLBACK(save_writefile_cb), NULL);
+							win, G_CALLBACK(save_writefile_cb), NULL);
 	}
 	else
-		save_writefile_cb(win->save);
+		save_writefile_cb(win, 1);
 }
 
 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
 static void
 save_destroy_cb(GtkWidget *widget, DebugWindow *win)
 {
-	if (win->save != NULL)
+	if (win->save != NULL) {
+		gaim_notify_close_with_handle(win->save);
+		gaim_request_close_with_handle(win->save);
 		gtk_widget_destroy(win->save);
-
-	win->save = NULL;
+		win->save = NULL;
+	}
 }
 #endif
 
@@ -283,17 +289,17 @@
 	g_signal_connect(G_OBJECT(win->save), "response",
 					 G_CALLBACK(save_checkfile_cb), win);
 #else /* FILECHOOSER */
-	win->save = gtk_file_selection_new(_("Save Debug Log"));
 	buf = g_strdup_printf("%s" G_DIR_SEPARATOR_S "gaim-debug.log",
 						  gaim_home_dir());
+	win->save = gtk_file_selection_new(_("Save Debug Log"));
 	gtk_file_selection_set_filename(GTK_FILE_SELECTION(win->save), buf);
-	g_free(buf);
 	g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->ok_button),
 					 "clicked", G_CALLBACK(save_checkfile_cb), win);
 	g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->cancel_button),
 					 "clicked", G_CALLBACK(save_destroy_cb), win);
 	g_signal_connect(G_OBJECT(win->save),
 					 "destroy", G_CALLBACK(save_destroy_cb), win);
+	g_free(buf);
 #endif /* FILECHOOSER */
 
 	gtk_widget_show_all(GTK_WIDGET(win->save));