Mercurial > pidgin.yaz
comparison 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 |
comparison
equal
deleted
inserted
replaced
9488:2770a0e659ca | 9489:85caa0722dfc |
---|---|
71 static gint | 71 static gint |
72 debug_window_destroy(GtkWidget *w, GdkEvent *event, void *unused) | 72 debug_window_destroy(GtkWidget *w, GdkEvent *event, void *unused) |
73 { | 73 { |
74 if (debug_win->timestamps_handle != 0) | 74 if (debug_win->timestamps_handle != 0) |
75 gaim_prefs_disconnect_callback(debug_win->timestamps_handle); | 75 gaim_prefs_disconnect_callback(debug_win->timestamps_handle); |
76 if (debug_win->save != NULL) | 76 if (debug_win->save != NULL) { |
77 gaim_notify_close_with_handle(debug_win->save); | |
78 gaim_request_close_with_handle(debug_win->save); | |
77 gtk_widget_destroy(debug_win->save); | 79 gtk_widget_destroy(debug_win->save); |
80 } | |
78 | 81 |
79 g_free(debug_win); | 82 g_free(debug_win); |
80 debug_win = NULL; | 83 debug_win = NULL; |
81 | 84 |
82 gaim_prefs_set_bool("/gaim/gtk/debug/enabled", FALSE); | 85 gaim_prefs_set_bool("/gaim/gtk/debug/enabled", FALSE); |
170 gtk_widget_show_all(win->find); | 173 gtk_widget_show_all(win->find); |
171 gtk_widget_grab_focus(f->entry); | 174 gtk_widget_grab_focus(f->entry); |
172 } | 175 } |
173 | 176 |
174 static void | 177 static void |
175 save_writefile_cb(GtkWidget *widget) | 178 save_writefile_cb(DebugWindow *win, gint id) |
176 { | 179 { |
177 const char *filename; | 180 const char *filename; |
181 FILE *fp; | |
178 char *tmp; | 182 char *tmp; |
179 FILE *fp; | |
180 | |
181 g_return_if_fail(debug_win != NULL); | |
182 | 183 |
183 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ | 184 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
184 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(debug_win->save)); | 185 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(win->save)); |
185 #else /* FILECHOOSER */ | 186 #else /* FILECHOOSER */ |
186 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(debug_win->save)); | 187 filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(win->save)); |
187 #endif /* FILECHOOSER */ | 188 #endif /* FILECHOOSER */ |
188 | 189 |
189 gaim_notify_close_with_handle(debug_win->save); | 190 gaim_notify_close_with_handle(win->save); |
190 | 191 |
191 if (filename == NULL) { | 192 if (filename == NULL) { |
192 gaim_notify_error(debug_win->save, NULL, _("Invalid file name."), NULL); | 193 gaim_notify_error(win->save, NULL, _("Invalid file name."), NULL); |
193 return; | 194 return; |
194 } | 195 } |
195 | 196 |
196 if ((fp = fopen(filename, "w+")) == NULL) { | 197 if ((fp = fopen(filename, "w+")) == NULL) { |
197 gaim_notify_error(debug_win->save, NULL, _("Unable to open file."), NULL); | 198 gaim_notify_error(win->save, NULL, _("Unable to open file."), NULL); |
198 return; | 199 return; |
199 } | 200 } |
200 | 201 |
201 tmp = gtk_imhtml_get_text(GTK_IMHTML(debug_win->text), NULL, NULL); | 202 tmp = gtk_imhtml_get_text(GTK_IMHTML(win->text), NULL, NULL); |
202 fprintf(fp, "Gaim Debug log : %s\n", gaim_date_full()); | 203 fprintf(fp, "Gaim Debug log : %s\n", gaim_date_full()); |
203 fprintf(fp, "%s", tmp); | 204 fprintf(fp, "%s", tmp); |
204 g_free(tmp); | 205 g_free(tmp); |
205 | 206 |
206 fclose(fp); | 207 fclose(fp); |
207 | 208 |
208 gtk_widget_destroy(debug_win->save); | 209 gtk_widget_destroy(win->save); |
209 debug_win->save = NULL; | 210 win->save = NULL; |
210 } | 211 } |
211 | 212 |
212 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ | 213 #if GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
213 static void | 214 static void |
214 save_checkfile_cb(GtkWidget *widget, gint response, DebugWindow *win) | 215 save_checkfile_cb(GtkWidget *widget, gint response, DebugWindow *win) |
215 { | 216 { |
216 const char *filename; | 217 const char *filename; |
217 | 218 |
218 if (response != GTK_RESPONSE_ACCEPT) { | 219 if (response != GTK_RESPONSE_ACCEPT) { |
220 gaim_notify_close_with_handle(win->save); | |
221 gaim_request_close_with_handle(win->save); | |
219 if (response == GTK_RESPONSE_CANCEL) | 222 if (response == GTK_RESPONSE_CANCEL) |
220 gtk_widget_destroy(win->save); | 223 gtk_widget_destroy(win->save); |
221 win->save = NULL; | 224 win->save = NULL; |
222 return; | 225 return; |
223 } | 226 } |
234 /* Descend into directory? */ | 237 /* Descend into directory? */ |
235 return; | 238 return; |
236 } | 239 } |
237 #endif /* FILECHOOSER */ | 240 #endif /* FILECHOOSER */ |
238 | 241 |
242 gaim_request_close_with_handle(win->save); | |
243 | |
239 if (g_file_test(filename, G_FILE_TEST_EXISTS)) | 244 if (g_file_test(filename, G_FILE_TEST_EXISTS)) |
240 { | 245 { |
241 gaim_request_close_with_handle(win->save); | |
242 gaim_request_yes_no(win->save, NULL, _("That file already exists"), | 246 gaim_request_yes_no(win->save, NULL, _("That file already exists"), |
243 _("Would you like to overwrite it?"), 1, | 247 _("Would you like to overwrite it?"), 1, |
244 win->save, G_CALLBACK(save_writefile_cb), NULL); | 248 win, G_CALLBACK(save_writefile_cb), NULL); |
245 } | 249 } |
246 else | 250 else |
247 save_writefile_cb(win->save); | 251 save_writefile_cb(win, 1); |
248 } | 252 } |
249 | 253 |
250 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ | 254 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ |
251 static void | 255 static void |
252 save_destroy_cb(GtkWidget *widget, DebugWindow *win) | 256 save_destroy_cb(GtkWidget *widget, DebugWindow *win) |
253 { | 257 { |
254 if (win->save != NULL) | 258 if (win->save != NULL) { |
259 gaim_notify_close_with_handle(win->save); | |
260 gaim_request_close_with_handle(win->save); | |
255 gtk_widget_destroy(win->save); | 261 gtk_widget_destroy(win->save); |
256 | 262 win->save = NULL; |
257 win->save = NULL; | 263 } |
258 } | 264 } |
259 #endif | 265 #endif |
260 | 266 |
261 static void | 267 static void |
262 save_cb(GtkWidget *w, DebugWindow *win) | 268 save_cb(GtkWidget *w, DebugWindow *win) |
281 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(win->save), | 287 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(win->save), |
282 "gaim-debug.log"); | 288 "gaim-debug.log"); |
283 g_signal_connect(G_OBJECT(win->save), "response", | 289 g_signal_connect(G_OBJECT(win->save), "response", |
284 G_CALLBACK(save_checkfile_cb), win); | 290 G_CALLBACK(save_checkfile_cb), win); |
285 #else /* FILECHOOSER */ | 291 #else /* FILECHOOSER */ |
286 win->save = gtk_file_selection_new(_("Save Debug Log")); | |
287 buf = g_strdup_printf("%s" G_DIR_SEPARATOR_S "gaim-debug.log", | 292 buf = g_strdup_printf("%s" G_DIR_SEPARATOR_S "gaim-debug.log", |
288 gaim_home_dir()); | 293 gaim_home_dir()); |
294 win->save = gtk_file_selection_new(_("Save Debug Log")); | |
289 gtk_file_selection_set_filename(GTK_FILE_SELECTION(win->save), buf); | 295 gtk_file_selection_set_filename(GTK_FILE_SELECTION(win->save), buf); |
290 g_free(buf); | |
291 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->ok_button), | 296 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->ok_button), |
292 "clicked", G_CALLBACK(save_checkfile_cb), win); | 297 "clicked", G_CALLBACK(save_checkfile_cb), win); |
293 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->cancel_button), | 298 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(win->save)->cancel_button), |
294 "clicked", G_CALLBACK(save_destroy_cb), win); | 299 "clicked", G_CALLBACK(save_destroy_cb), win); |
295 g_signal_connect(G_OBJECT(win->save), | 300 g_signal_connect(G_OBJECT(win->save), |
296 "destroy", G_CALLBACK(save_destroy_cb), win); | 301 "destroy", G_CALLBACK(save_destroy_cb), win); |
302 g_free(buf); | |
297 #endif /* FILECHOOSER */ | 303 #endif /* FILECHOOSER */ |
298 | 304 |
299 gtk_widget_show_all(GTK_WIDGET(win->save)); | 305 gtk_widget_show_all(GTK_WIDGET(win->save)); |
300 } | 306 } |
301 | 307 |