1 MimeAppsListFile appsList = new MimeAppsListFile(); 2 appsList.setDefaultApplication("text/plain", "geany.desktop"); 3 assert(appsList.defaultApplications() !is null); 4 assert(appsList.addedAssociations() !is null); 5 assert(appsList.defaultApplications().appsForMimeType("text/plain").equal(["geany.desktop"])); 6 assert(appsList.addedAssociations().appsForMimeType("text/plain").equal(["geany.desktop"])); 7 8 appsList.setDefaultApplication("image/png", null); 9 assert(!appsList.defaultApplications().contains("image/png")); 10 11 string contents = 12 `[Default Applications] 13 text/plain=kde4-kate.desktop`; 14 15 appsList = new MimeAppsListFile(iniLikeStringReader(contents)); 16 appsList.setDefaultApplication("text/plain", "geany.desktop"); 17 assert(appsList.defaultApplications().appsForMimeType("text/plain").equal(["geany.desktop"])); 18 assert(appsList.addedAssociations().appsForMimeType("text/plain").equal(["geany.desktop"])); 19 20 contents = 21 `[Default Applications] 22 text/plain=kde4-kate.desktop 23 [Added Associations] 24 text/plain=kde4-kate.desktop;emacs.desktop;`; 25 26 appsList = new MimeAppsListFile(iniLikeStringReader(contents)); 27 appsList.setDefaultApplication("text/plain", "geany.desktop"); 28 assert(appsList.defaultApplications().appsForMimeType("text/plain").equal(["geany.desktop"])); 29 assert(appsList.addedAssociations().appsForMimeType("text/plain").equal(["geany.desktop", "kde4-kate.desktop", "emacs.desktop"])); 30 31 contents = 32 `[Default Applications] 33 text/plain=emacs.desktop 34 [Added Associations] 35 text/plain=emacs.desktop;kde4-kate.desktop;geany.desktop;`; 36 37 appsList = new MimeAppsListFile(iniLikeStringReader(contents)); 38 appsList.setDefaultApplication("text/plain", "geany.desktop"); 39 assert(appsList.defaultApplications().appsForMimeType("text/plain").equal(["geany.desktop"])); 40 assert(appsList.addedAssociations().appsForMimeType("text/plain").equal(["geany.desktop", "emacs.desktop", "kde4-kate.desktop"])); 41 42 contents = 43 `[Default Applications] 44 text/plain=emacs.desktop 45 [Added Associations] 46 text/plain=emacs.desktop;kde4-kate.desktop; 47 [Removed Associations] 48 text/plain=kde4-okular.desktop;geany.desktop`; 49 50 appsList = new MimeAppsListFile(iniLikeStringReader(contents)); 51 appsList.setDefaultApplication("text/plain", "geany.desktop"); 52 assert(appsList.removedAssociations() !is null); 53 assert(appsList.defaultApplications().appsForMimeType("text/plain").equal(["geany.desktop"])); 54 assert(appsList.addedAssociations().appsForMimeType("text/plain").equal(["geany.desktop", "emacs.desktop", "kde4-kate.desktop"])); 55 assert(appsList.removedAssociations().appsForMimeType("text/plain").equal(["kde4-okular.desktop"])); 56
Set desktopId as default application for mimeType. Set it as first element in the list of added associations. Delete it from removed associations if listed. Note: This only changes the object, but not file itself.