Mercurial > pidgin.yaz
comparison src/gtkft.c @ 10923:accfd1f1f80d
[gaim-migrate @ 12693]
FT dialog "Open" works w/ non-ASCII paths (win32)
committer: Tailor Script <tailor@pidgin.im>
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Mon, 16 May 2005 00:47:41 +0000 |
parents | 9695281b1aa1 |
children | 9fe9c7e00666 |
comparison
equal
deleted
inserted
replaced
10922:68083504217c | 10923:accfd1f1f80d |
---|---|
291 if (gaim_xfer_is_completed(xfer)) { | 291 if (gaim_xfer_is_completed(xfer)) { |
292 gtk_widget_hide(dialog->stop_button); | 292 gtk_widget_hide(dialog->stop_button); |
293 gtk_widget_show(dialog->remove_button); | 293 gtk_widget_show(dialog->remove_button); |
294 | 294 |
295 #ifdef _WIN32 /* Only supported in Win32 right now */ | 295 #ifdef _WIN32 /* Only supported in Win32 right now */ |
296 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { | 296 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { |
297 gtk_widget_set_sensitive(dialog->open_button, TRUE); | 297 gtk_widget_set_sensitive(dialog->open_button, TRUE); |
298 } else { | 298 } else { |
299 gtk_widget_set_sensitive(dialog->open_button, FALSE); | 299 gtk_widget_set_sensitive(dialog->open_button, FALSE); |
300 } | 300 } |
301 #endif | 301 #endif |
302 gtk_widget_set_sensitive(dialog->pause_button, FALSE); | 302 gtk_widget_set_sensitive(dialog->pause_button, FALSE); |
303 gtk_widget_set_sensitive(dialog->resume_button, FALSE); | 303 gtk_widget_set_sensitive(dialog->resume_button, FALSE); |
304 | 304 |
305 gtk_widget_set_sensitive(dialog->remove_button, TRUE); | 305 gtk_widget_set_sensitive(dialog->remove_button, TRUE); |
405 | 405 |
406 static void | 406 static void |
407 open_button_cb(GtkButton *button, GaimGtkXferDialog *dialog) | 407 open_button_cb(GtkButton *button, GaimGtkXferDialog *dialog) |
408 { | 408 { |
409 #ifdef _WIN32 /* Only supported in Win32 right now */ | 409 #ifdef _WIN32 /* Only supported in Win32 right now */ |
410 int code = (int)ShellExecute(NULL, NULL, | 410 int code; |
411 gaim_xfer_get_local_filename(dialog->selected_xfer), | 411 if (G_WIN32_HAVE_WIDECHAR_API ()) { |
412 NULL, NULL, SW_SHOW); | 412 wchar_t *wc_filename = g_utf8_to_utf16( |
413 if (code == SE_ERR_ASSOCINCOMPLETE || code == SE_ERR_NOASSOC) | 413 gaim_xfer_get_local_filename( |
414 { | 414 dialog->selected_xfer), |
415 gaim_notify_error(NULL, NULL, | 415 -1, NULL, NULL, NULL); |
416 _("There is no application configured to open this type of file."), NULL); | 416 |
417 } | 417 code = (int) ShellExecuteW(NULL, NULL, wc_filename, NULL, NULL, |
418 else if (code < 32) | 418 SW_SHOW); |
419 { | 419 |
420 gaim_notify_error(NULL, NULL, | 420 g_free(wc_filename); |
421 _("An error occurred while opening the file."), NULL); | 421 } else { |
422 gaim_debug_warning("ft", "filename: %s; code: %d\n", gaim_xfer_get_local_filename(dialog->selected_xfer), code); | 422 char *l_filename = g_locale_from_utf8( |
423 } | 423 gaim_xfer_get_local_filename( |
424 dialog->selected_xfer), | |
425 -1, NULL, NULL, NULL); | |
426 | |
427 code = (int) ShellExecuteA(NULL, NULL, l_filename, NULL, NULL, | |
428 SW_SHOW); | |
429 | |
430 g_free(l_filename); | |
431 } | |
432 | |
433 if (code == SE_ERR_ASSOCINCOMPLETE || code == SE_ERR_NOASSOC) | |
434 { | |
435 gaim_notify_error(NULL, NULL, | |
436 _("There is no application configured to open this type of file."), NULL); | |
437 } | |
438 else if (code < 32) | |
439 { | |
440 gaim_notify_error(NULL, NULL, | |
441 _("An error occurred while opening the file."), NULL); | |
442 gaim_debug_warning("ft", "filename: %s; code: %d\n", | |
443 gaim_xfer_get_local_filename(dialog->selected_xfer), code); | |
444 } | |
424 #endif | 445 #endif |
425 } | 446 } |
426 | 447 |
427 static void | 448 static void |
428 pause_button_cb(GtkButton *button, GaimGtkXferDialog *dialog) | 449 pause_button_cb(GtkButton *button, GaimGtkXferDialog *dialog) |