public async Task PagedMembersMenuAsync() { var members = Context.Guild.Members.Values as CachedMember[]; var pageProvider = new ArrayPageProvider <CachedMember>(members); var menu = new PagedMenu(Context.User.Id, pageProvider); await Context.Channel.StartMenuAsync(menu); }
public async Task PagedMenuAsync() { var pages = new Page[] { /* string */ "First page!", /* embed */ new LocalEmbedBuilder().WithDescription("Second page!").Build(), /* tuple */ ("Third page!", new LocalEmbedBuilder().WithAuthor(Context.User).Build()) }; var pageProvider = new DefaultPageProvider(pages); var menu = new PagedMenu(Context.User.Id, pageProvider); await Context.Channel.StartMenuAsync(menu); }
public FolderBrowserOverlay(Screen parent, string currentPath, int width, int height) : base(parent) { label = new Label(currentPath) { ForegroundColor = ConsoleColor.Green, BackgroundColor = ConsoleColor.Black, Top = Top, Left = Left }; background = new Background { BackgroundColor = ConsoleColor.Black, ForegroundColor = ConsoleColor.Green, Top = 0, Left = 0, MinHeight = Console.WindowHeight, Width = Console.WindowWidth }; this.currentPath = currentPath; currentDir = new DirectoryInfo(currentPath); menu = new ConsoleMenu("Select a folder") { BackgroundColor = ConsoleColor.DarkGray, SelectedColor = ConsoleColor.DarkGreen, Top = Top + 10, Left = Left }; pagedMenu = new PagedMenu("Select a folder", GetSubDirsAsMenuItems()) { BackgroundColor = ConsoleColor.DarkGray, ForegroundColor = ConsoleColor.DarkGreen, Top = Top + 10, Left = Left, ItemPopulator = this }; ItemSelected(currentPath); ForegroundColor = ConsoleColor.Green; BackgroundColor = ConsoleColor.DarkCyan; AddComponent(background); AddComponent(pagedMenu); AddComponent(label); }
public async Task ListRemindersAsync() { var reminders = ReminderService.GetRemindersForUser(Context.Member.Id) .Where(reminder => reminder.UserId == Context.Member.Id.RawValue && Context.Guild.Channels.ContainsKey(reminder.ChannelId)) .OrderBy(reminder => reminder.TriggerAt) .ToList(); switch (reminders.Count) { case 0: await ReplyAsync(NO_REMINDERS_FOUND); return; case <= BatchSize: var embed = await CreateReminderEmbedAsync(reminders); await ReplyAsync(embed : embed.Build()); return; } var numberOfPages = MathEx.CeilingDivision(reminders.Count, BatchSize); var reminderBatches = reminders.Batch(BatchSize); var pageIndex = 0; var reminderPages = new List <Page>(); foreach (var reminderBatch in reminderBatches) { var reminderEmbedBuilder = await CreateReminderEmbedAsync(reminderBatch); reminderEmbedBuilder.Footer = new LocalEmbedFooterBuilder { Text = $"Page [{++pageIndex}/{numberOfPages}]" }; reminderPages.Add(reminderEmbedBuilder.Build()); } var pageProvider = new DefaultPageProvider(reminderPages); var menu = new PagedMenu(Context.User.Id, pageProvider); await Context.Channel.StartMenuAsync(menu); }