/// <summary>Add bookmarks of mounted medias (Windows)</summary> private List<Bookmark> AddSysDrives() { List<Bookmark> bms = new List<Bookmark>(); foreach (System.IO.DriveInfo di in System.IO.DriveInfo.GetDrives()) { Bookmark bm = new Bookmark(); bm.title=di.Name; bm.url = "file://" + di.Name; /*if (di.IsReady) { NewBtn.TooltipText = di.VolumeLabel + " (" + di.DriveFormat + ")"; }*/ switch (di.DriveType) { case System.IO.DriveType.Fixed: bm.Icon = "(internal)drive-harddisk.png"; break; case System.IO.DriveType.CDRom: bm.Icon = "(internal)drive-optical.png"; break; case System.IO.DriveType.Removable: bm.Icon = "(internal)drive-removable-media.png"; break; case System.IO.DriveType.Network: bm.Icon = "(internal)network-server.png"; break; case System.IO.DriveType.Ram: bm.Icon = "(internal)emblem-system.png"; break; case System.IO.DriveType.Unknown: bm.Icon = "(internal)image-missing.png"; break; } string d = di.Name; //OS-specific icons if (d.StartsWith("A:")) bm.Icon = "(internal)media-floppy.png"; if (d.StartsWith("B:")) bm.Icon = "(internal)media-floppy.png"; if (d.StartsWith("/dev")) bm.Icon = "(internal)preferences-desktop-peripherals.png"; if (d.StartsWith("/proc")) bm.Icon = "(internal)emblem-system.png"; if (d == "/") bm.Icon = "(internal)root-folder.png"; bms.Add(bm); } return bms; }
/// <summary>Initialize bookmark menu toolkit</summary> /// <param name="BookmarkXML">The bookmark database (in XML format)</param> /// <param name="Category">"QuickAccessBar", "BookmarksMenu" or "UserMenu"</param> public BookmarkTools(string BookmarkXML = null, string Category = "BookmarksMenu") { if (BookmarkXML == null) { BookmarkXML = Utilities.GetEmbeddedResource("DefaultBookmarks.xml"); if (BookmarkXML == null) throw new Exception("Cannot load pluginner.dll::DefaultBookmarks.xml"); } XmlDocument bmDoc = new XmlDocument(); bmDoc.LoadXml(BookmarkXML); XmlNodeList items = bmDoc.GetElementsByTagName("SpeedDial"); foreach (XmlNode x in items) {//parsing speed dials if ( x.Attributes.GetNamedItem("type") != null && x.Attributes.GetNamedItem("type").Value == Category ) { foreach (XmlNode xc in x.ChildNodes) {//parsing bookmark list if (xc.Name == "AutoBookmarks")//автозакладка { switch (xc.Attributes.GetNamedItem("type").Value) { case "System.IO.DriveInfo.GetDrives": bookmarks.AddRange(AddSysDrives()); break; case "LinuxMounts": bookmarks.AddRange(AddLinuxMounts()); break; //todo: LinuxSystemDirs (/), LinuxUserMounts } } else if (xc.Name == "Bookmark")//простая закладка { try { Bookmark bm = new Bookmark(); bm.title=xc.Attributes.GetNamedItem("title").Value; bm.url=xc.Attributes.GetNamedItem("url").Value; if(xc.OuterXml.IndexOf("icon=") > 0) bm.Icon=xc.Attributes.GetNamedItem("icon").Value; bookmarks.Add(bm); } catch { Console.WriteLine("WARNING: Invalid bookmark declaration: " + xc.OuterXml); }; } //todo: bookmark folders } } } }
/// <summary>Add bookmarks of mounted medias (*nix)</summary> private List<Bookmark> AddLinuxMounts() { List<Bookmark> bms = new List<Bookmark>(); if (Directory.Exists(@"/mnt")) { foreach (string dir in Directory.GetDirectories(@"/mnt/")) { Bookmark bm = new Bookmark(); bm.url="file://" + dir; bm.title=dir.Replace(@"/mnt/", ""); bm.Icon = "(internal)drive-removable-media.png"; bms.Add(bm); } } else return AddSysDrives(); //fallback for Windows return bms; }