576
578
result = gtk_dialog_run (GTK_DIALOG (dialog));
577
579
if (result != GTK_RESPONSE_OK) {
578
580
gtk_widget_destroy (dialog);
582
/* Here we may have to close brasero altogether */
583
if (manager->priv->oneshot) {
586
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (manager));
587
gtk_widget_destroy (toplevel);
582
session = brasero_image_option_dialog_get_session (BRASERO_IMAGE_OPTION_DIALOG (dialog));
593
session = brasero_burn_options_get_session (BRASERO_BURN_OPTIONS (dialog));
583
594
gtk_widget_destroy (dialog);
588
596
brasero_project_manager_burn (manager, session);
589
597
g_object_unref (session);
599
/* Here we may have to close brasero altogether */
600
if (manager->priv->oneshot) {
603
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (manager));
604
gtk_widget_destroy (toplevel);
622
638
result = gtk_dialog_run (GTK_DIALOG (dialog));
623
639
if (result != GTK_RESPONSE_OK) {
624
640
gtk_widget_destroy (dialog);
642
/* Here we may have to close brasero altogether */
643
if (manager->priv->oneshot) {
646
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (manager));
647
gtk_widget_destroy (toplevel);
628
session = brasero_disc_copy_dialog_get_session (BRASERO_DISC_COPY_DIALOG (dialog));
653
session = brasero_burn_options_get_session (BRASERO_BURN_OPTIONS (dialog));
629
654
gtk_widget_destroy (dialog);
631
656
brasero_project_manager_burn (manager, session);
632
657
g_object_unref (session);
659
/* Here we may have to close brasero altogether */
660
if (manager->priv->oneshot) {
663
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (manager));
664
gtk_widget_destroy (toplevel);
642
675
GtkWidget *toplevel;
643
676
GtkAction *action;
645
if ((manager->priv->type == BRASERO_PROJECT_TYPE_AUDIO
646
|| manager->priv->type == BRASERO_PROJECT_TYPE_DATA
647
|| manager->priv->type == BRASERO_PROJECT_TYPE_VIDEO)
648
&& !brasero_project_confirm_switch (BRASERO_PROJECT (manager->priv->project)))
651
678
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (manager));
680
if (manager->priv->type == BRASERO_PROJECT_TYPE_AUDIO
681
|| manager->priv->type == BRASERO_PROJECT_TYPE_DATA
682
|| manager->priv->type == BRASERO_PROJECT_TYPE_VIDEO) {
683
if (!brasero_project_confirm_switch (BRASERO_PROJECT (manager->priv->project)))
686
if (manager->priv->oneshot) {
687
/* Here we may have to close brasero altogether */
688
gtk_widget_destroy (toplevel);
653
693
if (manager->priv->status_ctx) {
654
694
GtkWidget *status;
743
783
BraseroProjectType type,
744
784
BraseroProjectManager *manager)
786
manager->priv->oneshot = FALSE;
746
787
brasero_project_manager_switch (manager, type, NULL, NULL, TRUE);
750
791
brasero_project_manager_new_empty_prj_cb (GtkAction *action, BraseroProjectManager *manager)
793
manager->priv->oneshot = FALSE;
752
794
brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_INVALID, NULL, NULL, TRUE);
756
798
brasero_project_manager_new_audio_prj_cb (GtkAction *action, BraseroProjectManager *manager)
800
manager->priv->oneshot = FALSE;
758
801
brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_AUDIO, NULL, NULL, TRUE);
762
805
brasero_project_manager_new_data_prj_cb (GtkAction *action, BraseroProjectManager *manager)
807
manager->priv->oneshot = FALSE;
764
808
brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_DATA, NULL, NULL, TRUE);
768
812
brasero_project_manager_new_video_prj_cb (GtkAction *action, BraseroProjectManager *manager)
814
manager->priv->oneshot = FALSE;
770
815
brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_VIDEO, NULL, NULL, TRUE);
774
819
brasero_project_manager_new_copy_prj_cb (GtkAction *action, BraseroProjectManager *manager)
821
manager->priv->oneshot = FALSE;
776
822
brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_COPY, NULL, NULL, TRUE);
780
826
brasero_project_manager_new_iso_prj_cb (GtkAction *action, BraseroProjectManager *manager)
828
manager->priv->oneshot = FALSE;
782
829
brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_ISO, NULL, NULL, TRUE);
786
brasero_project_manager_audio (BraseroProjectManager *manager, GSList *uris)
833
brasero_project_manager_audio (BraseroProjectManager *manager,
788
836
brasero_project_manager_switch (manager,
789
837
BRASERO_PROJECT_TYPE_AUDIO,
796
brasero_project_manager_data (BraseroProjectManager *manager, GSList *uris)
844
brasero_project_manager_data (BraseroProjectManager *manager,
798
brasero_project_manager_switch (manager,
799
BRASERO_PROJECT_TYPE_DATA,
847
gchar *burn_URI = NULL;
849
/* always add the contents of burn:/// URI if list is empty */
851
burn_URI = g_strdup ("burn:///");
852
uris = g_slist_prepend (NULL, burn_URI);
855
if (manager->priv->oneshot) {
856
brasero_project_set_data (BRASERO_PROJECT (manager->priv->project),
858
brasero_project_burn (BRASERO_PROJECT (manager->priv->project));
861
brasero_project_manager_switch (manager,
862
BRASERO_PROJECT_TYPE_DATA,
806
brasero_project_manager_video (BraseroProjectManager *manager, GSList *uris)
874
brasero_project_manager_video (BraseroProjectManager *manager,
808
877
brasero_project_manager_switch (manager,
809
878
BRASERO_PROJECT_TYPE_VIDEO,
816
885
brasero_project_manager_copy (BraseroProjectManager *manager,
817
886
const gchar *device)
819
brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_COPY, NULL, device, TRUE);
888
brasero_project_manager_switch (manager,
889
BRASERO_PROJECT_TYPE_COPY,
823
brasero_project_manager_iso (BraseroProjectManager *manager, const gchar *uri)
896
brasero_project_manager_iso (BraseroProjectManager *manager,
825
brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_ISO, NULL, uri, TRUE);
899
brasero_project_manager_switch (manager,
900
BRASERO_PROJECT_TYPE_ISO,
828
906
BraseroProjectType
924
1000
BraseroProjectType type;
926
1002
/* FIXME: make that asynchronous */
1003
/* NOTE: don't follow symlink because we want to identify them */
927
1004
file = g_file_new_for_commandline_arg (uri_arg);
928
1005
info = g_file_query_info (file,
929
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
930
G_FILE_QUERY_INFO_NONE,
1006
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
1007
G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK ","
1008
G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET,
1009
G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
1013
/* if that's a symlink, redo it on its target to get the real mime type
1014
* that usually also depends on the extension of the target:
1015
* ex: an iso file with the extension .iso will be seen as octet-stream
1016
* if the symlink hasn't got any extention at all */
1017
while (g_file_info_get_is_symlink (info)) {
1018
const gchar *target;
1019
GFileInfo *tmp_info;
1021
GError *error = NULL;
1023
target = g_file_info_get_symlink_target (info);
1024
if (!g_path_is_absolute (target)) {
1028
tmp = g_file_get_path (file);
1029
parent = g_path_get_dirname (tmp);
1032
target = g_build_filename (parent, target, NULL);
1036
tmp_file = g_file_new_for_commandline_arg (target);
1037
tmp_info = g_file_query_info (tmp_file,
1038
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
1039
G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK ","
1040
G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET,
1041
G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
1045
g_object_unref (tmp_file);
1049
g_object_unref (info);
1050
g_object_unref (file);
934
1056
uri = g_file_get_uri (file);
935
1057
if (g_file_query_exists (file, NULL)) {
936
1058
const gchar *mime;
939
1061
type = brasero_project_manager_open_by_mime (manager, uri, mime);
942
window = gtk_widget_get_toplevel (GTK_WIDGET (manager));
943
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
944
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
947
"Error loading project");
948
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
949
_("The project '%s' does not exist."),
951
gtk_dialog_run (GTK_DIALOG (dialog));
952
gtk_widget_destroy (dialog);
1066
string = g_strdup_printf (_("The project '%s' does not exist."), uri);
1067
brasero_utils_message_dialog (gtk_widget_get_toplevel (GTK_WIDGET (manager)),
1068
_("Error while loading the project:"),
954
1073
type = BRASERO_PROJECT_TYPE_INVALID;
1000
1120
const gchar *uri,
1001
1121
BraseroProjectManager *manager)
1123
manager->priv->oneshot = FALSE;
1003
1124
brasero_project_manager_open_uri (manager, uri);
1128
brasero_project_manager_set_oneshot (BraseroProjectManager *manager,
1131
manager->priv->oneshot = oneshot;
1007
1135
brasero_project_manager_empty (BraseroProjectManager *manager)
1009
1137
brasero_project_manager_switch (manager, BRASERO_PROJECT_TYPE_INVALID, NULL, NULL, TRUE);