| 184 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(debug_win->save)); |
184 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(debug_win->save)); |
| 185 #else /* FILECHOOSER */ |
185 #else /* FILECHOOSER */ |
| 186 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(debug_win->save)); |
186 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(debug_win->save)); |
| 187 #endif /* FILECHOOSER */ |
187 #endif /* FILECHOOSER */ |
| 188 |
188 |
| |
189 gaim_notify_close_with_handle(debug_win->save); |
| |
190 |
| 189 if (filename == NULL) { |
191 if (filename == NULL) { |
| 190 gaim_notify_error(NULL, NULL, _("Invalid file name."), NULL); |
192 gaim_notify_error(debug_win->save, NULL, _("Invalid file name."), NULL); |
| 191 return; |
193 return; |
| 192 } |
194 } |
| 193 |
195 |
| 194 if ((fp = fopen(filename, "w+")) == NULL) { |
196 if ((fp = fopen(filename, "w+")) == NULL) { |
| 195 gaim_notify_error(NULL, NULL, _("Unable to open file."), NULL); |
197 gaim_notify_error(debug_win->save, NULL, _("Unable to open file."), NULL); |
| 196 return; |
198 return; |
| 197 } |
199 } |
| 198 |
200 |
| 199 tmp = gtk_imhtml_get_text(GTK_IMHTML(debug_win->text), NULL, NULL); |
201 tmp = gtk_imhtml_get_text(GTK_IMHTML(debug_win->text), NULL, NULL); |
| 200 fprintf(fp, "Gaim Debug log : %s\n", gaim_date_full()); |
202 fprintf(fp, "Gaim Debug log : %s\n", gaim_date_full()); |
| 207 debug_win->save = NULL; |
209 debug_win->save = NULL; |
| 208 } |
210 } |
| 209 |
211 |
| 210 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
212 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
| 211 static void |
213 static void |
| 212 do_check_save_cb(GtkWidget *widget, gint response, gpointer data) |
214 save_checkfile_cb(GtkWidget *widget, gint response, DebugWindow *win) |
| 213 { |
215 { |
| 214 DebugWindow *win = (DebugWindow *)data; |
|
| 215 const char *filename; |
216 const char *filename; |
| 216 |
217 |
| 217 if (response != GTK_RESPONSE_ACCEPT) { |
218 if (response != GTK_RESPONSE_ACCEPT) { |
| 218 if (response == GTK_RESPONSE_CANCEL) |
219 if (response == GTK_RESPONSE_CANCEL) |
| 219 gtk_widget_destroy(win->save); |
220 gtk_widget_destroy(win->save); |
| 222 } |
223 } |
| 223 |
224 |
| 224 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(win->save)); |
225 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(win->save)); |
| 225 #else /* FILECHOOSER */ |
226 #else /* FILECHOOSER */ |
| 226 static void |
227 static void |
| 227 do_check_save_cb(GtkWidget *widget, DebugWindow *win) |
228 save_checkfile_cb(GtkWidget *widget, DebugWindow *win) |
| 228 { |
229 { |
| 229 const char *filename; |
230 const char *filename; |
| 230 |
231 |
| 231 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(win->save)); |
232 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(win->save)); |
| 232 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(win->save))) { |
233 if (gaim_gtk_check_if_dir(filename, GTK_FILE_SELECTION(win->save))) { |
| 235 } |
236 } |
| 236 #endif /* FILECHOOSER */ |
237 #endif /* FILECHOOSER */ |
| 237 |
238 |
| 238 if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
239 if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
| 239 { |
240 { |
| 240 gaim_request_yes_no(NULL, NULL, _("That file already exists"), |
241 gaim_request_close_with_handle(win->save); |
| |
242 gaim_request_yes_no(win->save, NULL, _("That file already exists"), |
| 241 _("Would you like to overwrite it?"), 1, |
243 _("Would you like to overwrite it?"), 1, |
| 242 win->save, G_CALLBACK(do_save_cb), NULL); |
244 win->save, G_CALLBACK(save_writefile_cb), NULL); |
| 243 } |
245 } |
| 244 else |
246 else |
| 245 do_save_cb(win->save); |
247 save_writefile_cb(win->save); |
| 246 } |
248 } |
| 247 |
249 |
| 248 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
250 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
| 249 static void |
251 static void |
| 250 cancel_save_cb(GtkWidget *widget, DebugWindow *win) |
252 save_destroy_cb(GtkWidget *widget, DebugWindow *win) |
| 251 { |
253 { |
| 252 if (win->save != NULL) |
254 if (win->save != NULL) |
| 253 gtk_widget_destroy(win->save); |
255 gtk_widget_destroy(win->save); |
| 254 |
256 |
| 255 win->save = NULL; |
257 win->save = NULL; |
| 258 |
260 |
| 259 static void |
261 static void |
| 260 save_cb(GtkWidget *w, DebugWindow *win) |
262 save_cb(GtkWidget *w, DebugWindow *win) |
| 261 { |
263 { |
| 262 if (win->save != NULL) { |
264 if (win->save != NULL) { |
| 263 gtk_widget_show(win->save); |
265 gtk_window_present(GTK_WINDOW(win->save)); |
| 264 gdk_window_raise(win->save->window); |
|
| 265 return; |
266 return; |
| 266 } |
267 } |
| 267 |
268 |
| 268 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
269 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
| 269 win->save = gtk_file_chooser_dialog_new(_("Save Conversation"), |
270 win->save = gtk_file_chooser_dialog_new(_("Save Conversation"), |
| 273 GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, |
274 GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, |
| 274 NULL); |
275 NULL); |
| 275 gtk_dialog_set_default_response(GTK_DIALOG(win->save), GTK_RESPONSE_ACCEPT); |
276 gtk_dialog_set_default_response(GTK_DIALOG(win->save), GTK_RESPONSE_ACCEPT); |
| 276 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(win->save), |
277 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(win->save), |
| 277 "gaim-debug.log"); |
278 "gaim-debug.log"); |
| 278 g_signal_connect(G_OBJECT(win->save), |
279 g_signal_connect(G_OBJECT(win->save), "response", |
| 279 "response", G_CALLBACK(do_check_save_cb), win->save); |
280 G_CALLBACK(save_checkfile_cb), win); |
| 280 #else /* FILECHOOSER */ |
281 #else /* FILECHOOSER */ |
| 281 gchar *buf; |
282 gchar *buf; |
| 282 |
283 |
| 283 win->save = gtk_file_selection_new(_("Save Debug Log")); |
284 win->save = gtk_file_selection_new(_("Save Debug Log")); |
| 284 buf = g_strdup_printf("%s" G_DIR_SEPARATOR_S "gaim-debug.log", |
285 buf = g_strdup_printf("%s" G_DIR_SEPARATOR_S "gaim-debug.log", |
| 285 gaim_home_dir()); |
286 gaim_home_dir()); |
| 286 gtk_file_selection_set_filename(GTK_FILE_SELECTION(win->save), buf); |
287 gtk_file_selection_set_filename(GTK_FILE_SELECTION(win->save), buf); |
| 287 g_free(buf); |
288 g_free(buf); |
| 288 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->ok_button), |
289 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->ok_button), |
| 289 "clicked", G_CALLBACK(do_check_save_cb), win); |
290 "clicked", G_CALLBACK(save_checkfile_cb), win); |
| 290 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->cancel_button), |
291 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->cancel_button), |
| 291 "clicked", G_CALLBACK(cancel_save_cb), win); |
292 "clicked", G_CALLBACK(save_destroy_cb), win); |
| 292 g_signal_connect(G_OBJECT(win->save), |
293 g_signal_connect(G_OBJECT(win->save), |
| 293 "destroy", G_CALLBACK(cancel_save_cb), win); |
294 "destroy", G_CALLBACK(save_destroy_cb), win); |
| 294 #endif /* FILECHOOSER */ |
295 #endif /* FILECHOOSER */ |
| 295 |
296 |
| 296 gtk_widget_show(win->save); |
297 gtk_widget_show_all(GTK_WIDGET(win->save)); |
| 297 } |
298 } |
| 298 |
299 |
| 299 static void |
300 static void |
| 300 clear_cb(GtkWidget *w, DebugWindow *win) |
301 clear_cb(GtkWidget *w, DebugWindow *win) |
| 301 { |
302 { |