Mercurial > pidgin.yaz
diff src/gtkdebug.c @ 9502:578986136bac
[gaim-migrate @ 10329]
Make gaim_request_file support saving files as well as opening files.
Changed silc appropriately, and made the Save dialog in the debug
window use this.
I changed request.c so that, when closing a request window, it also
tries to change any requests or notifies that were created using the
ui_handle as the handle.
It's similar to using "gc" as the first parameter of a gaim_request_bleh
or gaim_notify_bleh function.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sat, 10 Jul 2004 18:38:20 +0000 |
parents | d95e134da0ac |
children | 2d4301c90aed |
line wrap: on
line diff
--- a/src/gtkdebug.c Sat Jul 10 16:45:36 2004 +0000 +++ b/src/gtkdebug.c Sat Jul 10 18:38:20 2004 +0000 @@ -43,7 +43,6 @@ GtkWidget *window; GtkWidget *text; GtkWidget *find; - GtkWidget *save; gboolean timestamps; gboolean paused; @@ -73,11 +72,9 @@ { if (debug_win->timestamps_handle != 0) gaim_prefs_disconnect_callback(debug_win->timestamps_handle); - 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); - } + + /* If the "Save Log" dialog is open then close it */ + gaim_request_close_with_handle(debug_win); g_free(debug_win); debug_win = NULL; @@ -175,27 +172,14 @@ } static void -save_writefile_cb(DebugWindow *win, gint id) +save_writefile_cb(void *user_data, const char *filename) { - const char *filename; + DebugWindow *win = (DebugWindow *)user_data; FILE *fp; char *tmp; -#if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(win->save)); -#else /* FILECHOOSER */ - filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(win->save)); -#endif /* FILECHOOSER */ - - gaim_notify_close_with_handle(win->save); - - if (filename == NULL) { - gaim_notify_error(win->save, NULL, _("Invalid file name."), NULL); - return; - } - if ((fp = fopen(filename, "w+")) == NULL) { - gaim_notify_error(win->save, NULL, _("Unable to open file."), NULL); + gaim_notify_error(win, NULL, _("Unable to open file."), NULL); return; } @@ -205,97 +189,14 @@ g_free(tmp); fclose(fp); - - gtk_widget_destroy(win->save); - win->save = NULL; } -#if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ -static void -save_checkfile_cb(GtkWidget *widget, gint response, DebugWindow *win) -{ - 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; - return; - } - - filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(win->save)); -#else /* FILECHOOSER */ -static void -save_checkfile_cb(GtkWidget *widget, DebugWindow *win) -{ - const char *filename; - - filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(win->save)); - if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(win->save))) { - /* Descend into directory? */ - return; - } -#endif /* FILECHOOSER */ - - gaim_request_close_with_handle(win->save); - - if (g_file_test(filename, G_FILE_TEST_EXISTS)) - { - gaim_request_yes_no(win->save, NULL, _("That file already exists"), - _("Would you like to overwrite it?"), 1, - win, G_CALLBACK(save_writefile_cb), NULL); - } - else - 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) { - gaim_notify_close_with_handle(win->save); - gaim_request_close_with_handle(win->save); - gtk_widget_destroy(win->save); - win->save = NULL; - } -} -#endif - static void save_cb(GtkWidget *w, DebugWindow *win) { - if (win->save != NULL) { - gtk_window_present(GTK_WINDOW(win->save)); - return; - } - -#if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ - win->save = gtk_file_chooser_dialog_new(_("Save Conversation"), - GTK_WINDOW(win->window), - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, - NULL); - gtk_dialog_set_default_response(GTK_DIALOG(win->save), GTK_RESPONSE_ACCEPT); - gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(win->save), - "gaim-debug.log"); - 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")); - gtk_file_selection_set_filename(GTK_FILE_SELECTION(win->save), "gaim-debug.log"); - 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); -#endif /* FILECHOOSER */ - - gtk_widget_show_all(GTK_WIDGET(win->save)); + gaim_request_close_with_handle(win); + gaim_request_file(win, _("Save Debug Log"), "gaim-debug.log", TRUE, + G_CALLBACK(save_writefile_cb), NULL, win); } static void