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 {