示例#1
0
        static IEnumerable <Menu> CreateItems(AbsoluteDirectoryPath currentDir, ILookup <IAbsolutePath, IAbsolutePath> folderToFiles, IShell shell)
        {
            var dirs  = folderToFiles[currentDir].OfType <AbsoluteDirectoryPath>().OrderBy(f => f.Name);
            var files = folderToFiles[currentDir].OfType <AbsoluteFilePath>().OrderBy(f => f.Name);

            foreach (var dir in dirs)
            {
                yield return(Menu.Submenu(
                                 name: dir.Name.ToString() + Path.DirectorySeparatorChar,
                                 icon: Icons.Folder,
                                 submenu: CreateItems(dir, folderToFiles, shell).Concat()));
            }

            foreach (var file in files)
            {
                var f = file;
                yield return(Menu.Item(
                                 name: file.Name.ToString(),
                                 icon: Icons.GetFileIcon(f),
                                 action: () => shell.OpenWithDefaultApplication(f)));
            }
        }