Mercurial > pidgin.yaz
comparison src/gtkft.c @ 12483:54448bd2ccc7
[gaim-migrate @ 14795]
Allow the file transfer window open button to work in environments other than win32 and GNOME. In KDE, we do The Right Thing. Otherwise, we fall back the browser.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Wed, 14 Dec 2005 19:06:27 +0000 |
parents | f71d6b79ec81 |
children | e856f985a0b9 |
comparison
equal
deleted
inserted
replaced
12482:bd5b3f82dd8e | 12483:54448bd2ccc7 |
---|---|
296 gtk_widget_set_sensitive(dialog->open_button, TRUE); | 296 gtk_widget_set_sensitive(dialog->open_button, TRUE); |
297 } else { | 297 } else { |
298 gtk_widget_set_sensitive(dialog->open_button, FALSE); | 298 gtk_widget_set_sensitive(dialog->open_button, FALSE); |
299 } | 299 } |
300 #else | 300 #else |
301 /* If using GNOME, use gnome-open */ | 301 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { |
302 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE && gaim_running_gnome()) { | |
303 gtk_widget_set_sensitive(dialog->open_button, TRUE); | 302 gtk_widget_set_sensitive(dialog->open_button, TRUE); |
304 } else { | 303 } else { |
305 gtk_widget_set_sensitive (dialog->open_button, FALSE); | 304 gtk_widget_set_sensitive (dialog->open_button, FALSE); |
306 } | 305 } |
307 #endif | 306 #endif |
448 _("An error occurred while opening the file."), NULL); | 447 _("An error occurred while opening the file."), NULL); |
449 gaim_debug_warning("ft", "filename: %s; code: %d\n", | 448 gaim_debug_warning("ft", "filename: %s; code: %d\n", |
450 gaim_xfer_get_local_filename(dialog->selected_xfer), code); | 449 gaim_xfer_get_local_filename(dialog->selected_xfer), code); |
451 } | 450 } |
452 #else | 451 #else |
453 /* If using GNOME, use gnome-open */ | 452 const char *filename = gaim_xfer_get_local_filename(dialog->selected_xfer); |
453 char *command = NULL; | |
454 char *tmp = NULL; | |
455 GError *error = NULL; | |
456 | |
454 if (gaim_running_gnome()) | 457 if (gaim_running_gnome()) |
455 { | 458 { |
456 char *command = NULL; | 459 char *escaped = g_shell_quote(filename); |
457 char *tmp = NULL; | 460 command = g_strdup_printf("gnome-open %s", escaped); |
458 GError *error = NULL; | 461 g_free(escaped); |
459 | 462 } |
460 command = g_strdup_printf("gnome-open \"%s\"", | 463 else if (gaim_running_kde()) |
461 gaim_xfer_get_local_filename(dialog->selected_xfer)); | 464 { |
462 | 465 char *escaped = g_shell_quote(filename); |
463 if (gaim_program_is_valid(command)) | 466 |
467 if (gaim_str_has_suffix(filename, ".desktop")) | |
468 command = g_strdup_printf("kfmclient openURL %s 'text/plain'", escaped); | |
469 else | |
470 command = g_strdup_printf("kfmclient openURL %s", escaped); | |
471 g_free(escaped); | |
472 } | |
473 else | |
474 { | |
475 gaim_notify_uri(NULL, filename); | |
476 return; | |
477 } | |
478 | |
479 if (gaim_program_is_valid(command)) | |
480 { | |
481 gint exit_status; | |
482 if (!g_spawn_command_line_sync(command, NULL, NULL, &exit_status, &error)) | |
464 { | 483 { |
465 gint exit_status; | 484 tmp = g_strdup_printf(_("Error launching %s: %s"), |
466 if (!g_spawn_command_line_sync(command, NULL, NULL, &exit_status, &error)) | 485 gaim_xfer_get_local_filename(dialog->selected_xfer), |
467 { | 486 error->message); |
468 tmp = g_strdup_printf(_("Error launching %s: %s"), | 487 gaim_notify_error(dialog, NULL, _("Unable to open file."), tmp); |
469 gaim_xfer_get_local_filename(dialog->selected_xfer), | 488 g_free(tmp); |
470 error->message); | 489 g_error_free(error); |
471 gaim_notify_error(dialog, NULL, _("Unable to open file."), tmp); | 490 } |
472 g_free(tmp); | 491 if (exit_status != 0) |
473 g_error_free(error); | 492 { |
474 } | 493 char *primary = g_strdup_printf(_("Error running %s"), command); |
475 if (exit_status != 0) | 494 char *secondary = g_strdup_printf(_("Process returned error code %d"), |
476 { | 495 exit_status); |
477 char *primary = g_strdup_printf(_("Error running %s"), command); | 496 gaim_notify_error(dialog, NULL, primary, secondary); |
478 char *secondary = g_strdup_printf(_("Process returned error code %d"), | 497 g_free(tmp); |
479 exit_status); | |
480 gaim_notify_error(dialog, NULL, primary, secondary); | |
481 g_free(tmp); | |
482 } | |
483 } | 498 } |
484 } | 499 } |
485 #endif | 500 #endif |
486 } | 501 } |
487 | 502 |