Mercurial > pidgin
comparison src/gtkdebug.c @ 9482:b917acdc982f
[gaim-migrate @ 10307]
Alright, the buddy icon selector is done. It should rock now.
I also made a few tweaks to the debug save window.
gaim_notify_close_with_handle() and gaim_request_close_with_handle()
are sweet.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Thu, 08 Jul 2004 04:07:23 +0000 |
| parents | 91856b52a391 |
| children | 59d986a931d4 |
comparison
equal
deleted
inserted
replaced
| 9481:683660b4efeb | 9482:b917acdc982f |
|---|---|
| 94 | 94 |
| 95 return FALSE; | 95 return FALSE; |
| 96 } | 96 } |
| 97 | 97 |
| 98 static void | 98 static void |
| 99 do_find_cb(GtkWidget *widget, gint resp, struct _find *f) | 99 do_find_cb(GtkWidget *widget, gint response, struct _find *f) |
| 100 { | 100 { |
| 101 switch (resp) { | 101 switch (response) { |
| 102 case GTK_RESPONSE_OK: | 102 case GTK_RESPONSE_OK: |
| 103 gtk_imhtml_search_find(GTK_IMHTML(f->window->text), | 103 gtk_imhtml_search_find(GTK_IMHTML(f->window->text), |
| 104 gtk_entry_get_text(GTK_ENTRY(f->entry))); | 104 gtk_entry_get_text(GTK_ENTRY(f->entry))); |
| 105 break; | 105 break; |
| 106 | 106 |
| 170 gtk_widget_show_all(win->find); | 170 gtk_widget_show_all(win->find); |
| 171 gtk_widget_grab_focus(f->entry); | 171 gtk_widget_grab_focus(f->entry); |
| 172 } | 172 } |
| 173 | 173 |
| 174 static void | 174 static void |
| 175 do_save_cb(GtkWidget *widget) | 175 save_writefile_cb(GtkWidget *widget) |
| 176 { | 176 { |
| 177 const char *filename; | 177 const char *filename; |
| 178 char *tmp; | 178 char *tmp; |
| 179 FILE *fp; | 179 FILE *fp; |
| 180 | 180 |
| 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 { |
