~ubuntu-branches/ubuntu/oneiric/cairo-dock-plug-ins/oneiric-updates

« back to all changes in this revision

Viewing changes to gvfs-integration/cairo-dock-gio-vfs.c

  • Committer: Kees Cook
  • Date: 2011-08-11 23:17:39 UTC
  • mfrom: (20.1.1 cairo-dock-plug-ins)
  • Revision ID: kees@outflux.net-20110811231739-cteedan51tmdg77v
Tags: 2.4.0~0beta2-0ubuntu1
releasing version 2.4.0~0beta2-0ubuntu1

Show diffs side-by-side

added added

removed removed

Lines of Context:
136
136
                &erreur);
137
137
        if (erreur != NULL)
138
138
        {
139
 
                cd_warning ("gnome_integration : %s", erreur->message);
 
139
                cd_warning ("gvfs-integration : %s", erreur->message);
140
140
                g_error_free (erreur);
141
141
                g_object_unref (pFile);
142
142
                return ;
150
150
                pFileInfo = g_file_enumerator_next_file (pFileEnum, NULL, &erreur);
151
151
                if (erreur != NULL)
152
152
                {
153
 
                        cd_warning ("gnome_integration : %s", erreur->message);
 
153
                        cd_warning ("gvfs-integration : %s", erreur->message);
154
154
                        g_error_free (erreur);
155
155
                        erreur = NULL;
156
156
                }
311
311
                cValidUri = g_filename_from_uri (cNautilusFile, NULL, &erreur);
312
312
                if (erreur != NULL)
313
313
                {
314
 
                        cd_warning ("gnome_integration : %s", erreur->message);
 
314
                        cd_warning ("gvfs-integration : %s", erreur->message);
315
315
                        g_error_free (erreur);
316
316
                        return ;
317
317
                }
370
370
        //g_object_unref (pFile);
371
371
        if (erreur != NULL)  // peut arriver si l'emplacement n'est pas monte.
372
372
        {
373
 
                cd_debug ("gnome_integration : %s", erreur->message);  // inutile d'en faire un warning.
 
373
                cd_debug ("gvfs-integration : %s", erreur->message);  // inutile d'en faire un warning.
374
374
                g_error_free (erreur);
375
375
                g_free (cValidUri);
376
376
                g_object_unref (pFile);
698
698
                &erreur);
699
699
        if (erreur != NULL)
700
700
        {
701
 
                cd_warning ("gnome_integration : %s", erreur->message);
 
701
                cd_warning ("gvfs-integration : %s", erreur->message);
702
702
                g_error_free (erreur);
703
703
                g_object_unref (pFile);
704
704
                return NULL;
714
714
                pFileInfo = g_file_enumerator_next_file (pFileEnum, NULL, &erreur);
715
715
                if (erreur != NULL)
716
716
                {
717
 
                        cd_warning ("gnome_integration : %s", erreur->message);
 
717
                        cd_warning ("gvfs-integration : %s", erreur->message);
718
718
                        g_error_free (erreur);
719
719
                        erreur = NULL;
720
720
                        continue;
888
888
                
889
889
                icon = cairo_dock_create_dummy_launcher (g_strdup ("home"),
890
890
                        g_strdup (pRootIcon->cFileName),
891
 
                        g_strdup ("/home"),
 
891
                        g_strdup (g_getenv ("HOME")),
892
892
                        NULL,
893
893
                        iOrder++);
894
894
                icon->iTrueType = CAIRO_DOCK_ICON_TYPE_FILE;
895
895
                icon->iGroup = iNewIconsGroup;
896
 
                icon->cBaseURI = g_strdup_printf ("file://%s", "/home");
 
896
                icon->cBaseURI = g_strdup_printf ("file://%s", g_getenv ("HOME"));
897
897
                icon->iVolumeID = 0;
898
898
                
899
899
                pIconList = g_list_insert_sorted (pIconList,
929
929
                &erreur);
930
930
        if (erreur != NULL)
931
931
        {
932
 
                cd_warning ("gnome_integration : %s", erreur->message);
 
932
                cd_warning ("gvfs-integration : %s", erreur->message);
933
933
                g_error_free (erreur);
934
934
                g_object_unref (pFile);
935
935
                return 0;
943
943
                pFileInfo = g_file_enumerator_next_file (pFileEnum, NULL, &erreur);
944
944
                if (erreur != NULL)
945
945
                {
946
 
                        cd_warning ("gnome_integration : %s", erreur->message);
 
946
                        cd_warning ("gvfs-integration : %s", erreur->message);
947
947
                        g_error_free (erreur);
948
948
                        erreur = NULL;
949
949
                        continue;
1014
1014
static void cairo_dock_gio_vfs_launch_uri (const gchar *cURI)
1015
1015
{
1016
1016
        g_return_if_fail (cURI != NULL);
 
1017
        
 
1018
        // in case it's a mount point, take the URI that can actually be launched. 
1017
1019
        GError *erreur = NULL;
1018
1020
        gchar *cValidUri = (*cURI == '/' ? g_strconcat ("file://", cURI, NULL) : g_strdup (cURI));
1019
1021
        cd_message ("%s (%s)", __func__, cValidUri);
1020
1022
        
1021
1023
        gchar *cTargetURI = _cd_find_target_uri (cValidUri);
1022
 
        gboolean bSuccess = g_app_info_launch_default_for_uri (cTargetURI != NULL ? cTargetURI : cValidUri,
 
1024
        cURI= (cTargetURI ? cTargetURI : cValidUri);
 
1025
        
 
1026
        // now, try to launch it with the default program know by gvfs.
 
1027
        gboolean bSuccess = g_app_info_launch_default_for_uri (cURI,
1023
1028
                NULL,
1024
1029
                &erreur);
1025
 
        g_free (cValidUri);
1026
 
        g_free (cTargetURI);
1027
 
        if (erreur != NULL)
 
1030
        if (erreur != NULL)  // error can happen (for instance, opening 'trash:/' on XFCE with a previous installation of nautilus) => try with another method.
1028
1031
        {
1029
 
                cd_warning ("gnome_integration : couldn't launch '%s' [%s]", cURI, erreur->message);
 
1032
                cd_debug ("gvfs-integration : couldn't launch '%s' [%s]", cURI, erreur->message);
1030
1033
                g_error_free (erreur);
 
1034
                erreur = NULL;
 
1035
                
 
1036
                // get the mime-type.
 
1037
                GFile *pFile = (*cURI == '/' ? g_file_new_for_path (cURI) : g_file_new_for_uri (cURI));
 
1038
                const gchar *cQuery = G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE;
 
1039
                GFileInfo *pFileInfo = g_file_query_info (pFile,
 
1040
                        cQuery,
 
1041
                        G_FILE_QUERY_INFO_NONE,
 
1042
                        NULL,
 
1043
                        &erreur);
 
1044
                if (erreur != NULL)  // if no mime-type (can happen with not mounted volumes), abort.
 
1045
                {
 
1046
                        cd_warning ("gvfs-integration : %s", erreur->message);
 
1047
                        g_error_free (erreur);
 
1048
                }
 
1049
                else
 
1050
                {
 
1051
                        // get all the apps that can launch it.
 
1052
                        const gchar *cMimeType = g_file_info_get_content_type (pFileInfo);
 
1053
                        GList *pAppsList = g_app_info_get_all_for_type (cMimeType);
 
1054
                        gchar *cCommand;
 
1055
                        GAppInfo *pAppInfo;
 
1056
                        const char *cExec;
 
1057
                        GList *a;
 
1058
                        for (a = pAppsList; a != NULL; a = a->next)
 
1059
                        {
 
1060
                                pAppInfo = a->data;
 
1061
                                cExec = g_app_info_get_executable (pAppInfo);
 
1062
                                if (cExec)  // use the first available. it is supposed to be the most suitable, but the default method doesn't seem to use it.
 
1063
                                {
 
1064
                                        gchar *cPath = g_filename_from_uri (cURI, NULL, NULL);
 
1065
                                        cairo_dock_launch_command_printf ("%s \"%s\"", NULL, cExec, cPath?cPath:cURI);  // in case the program doesn't handle URI (geeqie, etc).
 
1066
                                        g_free (cPath);
 
1067
                                        break;
 
1068
                                }
 
1069
                        }
 
1070
                        g_list_free (pAppsList);
 
1071
                }
 
1072
                g_object_unref (pFile);
1031
1073
        }
 
1074
        g_free (cValidUri);
 
1075
        g_free (cTargetURI);
1032
1076
}
1033
1077
 
1034
1078
static GMount *_cd_find_mount_from_uri (const gchar *cURI, gchar **cTargetURI)
1143
1187
                bSuccess = g_mount_eject_finish (G_MOUNT (pObject), res, &erreur);
1144
1188
        if (erreur != NULL)
1145
1189
        {
1146
 
                cd_warning ("gnome-integration : %s", erreur->message);
 
1190
                cd_warning ("gvfs-integration : %s", erreur->message);
1147
1191
                g_error_free (erreur);
1148
1192
        }
1149
1193
        
1298
1342
        //g_object_unref (pFile);
1299
1343
        if (erreur != NULL)
1300
1344
        {
1301
 
                cd_warning ("gnome-integration : couldn't add monitor on '%s' (%d) [%s]", cURI, bDirectory, erreur->message);
 
1345
                cd_warning ("gvfs-integration : couldn't add monitor on '%s' (%d) [%s]", cURI, bDirectory, erreur->message);
1302
1346
                g_error_free (erreur);
1303
1347
                return ;
1304
1348
        }
1341
1385
                        &erreur);
1342
1386
                if (erreur != NULL)
1343
1387
                {
1344
 
                        cd_warning ("gnome_integration : %s", erreur->message);
 
1388
                        cd_warning ("gvfs-integration : %s", erreur->message);
1345
1389
                        g_error_free (erreur);
1346
1390
                        g_object_unref (pFile);
1347
1391
                        return FALSE;
1356
1400
                bSuccess = g_file_delete (pFile, NULL, &erreur);
1357
1401
                if (erreur != NULL)
1358
1402
                {
1359
 
                        cd_warning ("gnome-integration : %s", erreur->message);
 
1403
                        cd_warning ("gvfs-integration : %s", erreur->message);
1360
1404
                        g_error_free (erreur);
1361
1405
                }
1362
1406
        }
1365
1409
                bSuccess = g_file_trash (pFile, NULL, &erreur);
1366
1410
                if (erreur != NULL)
1367
1411
                {
1368
 
                        cd_warning ("gnome-integration : %s", erreur->message);
 
1412
                        cd_warning ("gvfs-integration : %s", erreur->message);
1369
1413
                        g_error_free (erreur);
1370
1414
                }
1371
1415
        }
1381
1425
        GFile *pNewFile = g_file_set_display_name (pOldFile, cNewName, NULL, &erreur);
1382
1426
        if (erreur != NULL)
1383
1427
        {
1384
 
                cd_warning ("gnome-integration : %s", erreur->message);
 
1428
                cd_warning ("gvfs-integration : %s", erreur->message);
1385
1429
                g_error_free (erreur);
1386
1430
        }
1387
1431
        gboolean bSuccess = (pNewFile != NULL);
1413
1457
                &erreur);
1414
1458
        if (erreur != NULL)
1415
1459
        {
1416
 
                cd_warning ("gnome-integration : %s", erreur->message);
 
1460
                cd_warning ("gvfs-integration : %s", erreur->message);
1417
1461
                g_error_free (erreur);
1418
1462
        }
1419
1463
        g_object_unref (pFile);
1436
1480
                g_file_create (pFile, G_FILE_CREATE_PRIVATE, NULL, &erreur);
1437
1481
        if (erreur != NULL)
1438
1482
        {
1439
 
                cd_warning ("gnome-integration : %s", erreur->message);
 
1483
                cd_warning ("gvfs-integration : %s", erreur->message);
1440
1484
                g_error_free (erreur);
1441
1485
                bSuccess = FALSE;
1442
1486
        }
1465
1509
                &erreur);
1466
1510
        if (erreur != NULL)
1467
1511
        {
1468
 
                cd_warning ("gnome-integration : couldn't get file properties for '%s' [%s]", cURI, erreur->message);
 
1512
                cd_warning ("gvfs-integration : couldn't get file properties for '%s' [%s]", cURI, erreur->message);
1469
1513
                g_error_free (erreur);
1470
1514
        }
1471
1515
        
1532
1576
                &erreur);
1533
1577
        if (erreur != NULL)
1534
1578
        {
1535
 
                cd_warning ("gnome_integration : %s", erreur->message);
 
1579
                cd_warning ("gvfs-integration : %s", erreur->message);
1536
1580
                g_object_unref (pFile);
1537
1581
                g_error_free (erreur);
1538
1582
                return ;
1546
1590
                pFileInfo = g_file_enumerator_next_file (pFileEnum, NULL, &erreur);
1547
1591
                if (erreur != NULL)
1548
1592
                {
1549
 
                        cd_warning ("gnome_integration : %s", erreur->message);
 
1593
                        cd_warning ("gvfs-integration : %s", erreur->message);
1550
1594
                        g_error_free (erreur);
1551
1595
                        erreur = NULL;
1552
1596
                        continue;
1567
1611
                g_file_delete (file, NULL, &erreur);
1568
1612
                if (erreur != NULL)
1569
1613
                {
1570
 
                        cd_warning ("gnome_integration : %s", erreur->message);
 
1614
                        cd_warning ("gvfs-integration : %s", erreur->message);
1571
1615
                        g_error_free (erreur);
1572
1616
                        erreur = NULL;
1573
1617
                }
1604
1648
                &erreur);
1605
1649
        if (erreur != NULL)
1606
1650
        {
1607
 
                cd_warning ("gnome_integration : %s", erreur->message);
 
1651
                cd_warning ("gvfs-integration : %s", erreur->message);
1608
1652
                g_object_unref (pFile);
1609
1653
                g_error_free (erreur);
1610
1654
                return ;
1618
1662
                pFileInfo = g_file_enumerator_next_file (pFileEnum, NULL, &erreur);
1619
1663
                if (erreur != NULL)
1620
1664
                {
1621
 
                        cd_warning ("gnome_integration : %s", erreur->message);
 
1665
                        cd_warning ("gvfs-integration : %s", erreur->message);
1622
1666
                        g_error_free (erreur);
1623
1667
                        erreur = NULL;
1624
1668
                        continue;
1681
1725
                }
1682
1726
                if (erreur != NULL)
1683
1727
                {
1684
 
                        cd_warning ("gnome_integration : %s", erreur->message);
 
1728
                        cd_warning ("gvfs-integration : %s", erreur->message);
1685
1729
                        g_error_free (erreur);
1686
1730
                        erreur = NULL;
1687
1731
                }
1713
1757
        
1714
1758
        if (erreur != NULL)  // peut arriver si l'emplacement n'est pas monte, mais on signale tout de meme la raison avec un warning.
1715
1759
        {
1716
 
                cd_warning ("gnome_integration : %s", erreur->message);
 
1760
                cd_warning ("gvfs-integration : %s", erreur->message);
1717
1761
                g_error_free (erreur);
1718
1762
                g_free (cValidUri);
1719
1763
                g_object_unref (pFile);