public ToggleTricksForm(LogicMode logicMode, string userLogicFilename, IEnumerable <string> tricksEnabled) { InitializeComponent(); Result = tricksEnabled.ToList(); var lines = LogicUtils.ReadRulesetFromResources(logicMode, userLogicFilename); var itemList = LogicUtils.PopulateItemListFromLogicData(lines); var y = 9; var deltaY = 23; var tricks = itemList.Where(io => io.IsTrick); foreach (var itemObject in tricks.OrderBy(io => io.Name)) { var cTrick = new CheckBox(); cTrick.Tag = itemObject; cTrick.Checked = tricksEnabled.Contains(itemObject.Name); cTrick.Text = itemObject.Name; TooltipBuilder.SetTooltip(cTrick, itemObject.TrickTooltip); cTrick.Location = new Point(9, y); cTrick.Size = new Size(pTricks.Width - 50, deltaY); cTrick.CheckedChanged += cTrick_CheckedChanged; pTricks.Controls.Add(cTrick); y += deltaY; } }
private void Write_Tricks() { pTricks.Controls.Clear(); var itemList = LogicUtils.PopulateItemListFromLogicData(LogicFile); var y = 9; var deltaY = 23; var tricks = itemList.Where(io => io.IsTrick); var categories = tricks.Select(io => string.IsNullOrWhiteSpace(io.TrickCategory) ? "Misc" : io.TrickCategory).Distinct().ToList(); if (categories.Count > 1) { foreach (var i in tricks) { i.TrickCategory = string.IsNullOrWhiteSpace(i.TrickCategory) ? "Misc" : i.TrickCategory; } tricks = tricks.OrderBy(io => categories.IndexOf(io.TrickCategory)); } string currentCategory = string.Empty; foreach (var itemObject in tricks) { if (!itemObject.Name.ToLower().Contains(txtSearch.Text.ToLower())) { continue; } if (itemObject.TrickCategory != null && currentCategory != itemObject.TrickCategory) { currentCategory = itemObject.TrickCategory; var cCategory = new InvertIndeterminateCheckBox(); cCategory.Text = currentCategory + ":"; cCategory.Location = new Point(9, y); cCategory.Size = new Size(pTricks.Width - 50, deltaY); cCategory.CheckStateChanged += cTrick_CheckStateChanged; cCategory.Tag = tricks .Where(io => io.TrickCategory == currentCategory && io.Name.ToLower().Contains(txtSearch.Text.ToLower())) .Select(io => io.Name) .ToHashSet(); pTricks.Controls.Add(cCategory); y += deltaY; } var cTrick = new CheckBox(); cTrick.Tag = new HashSet <string> { itemObject.Name }; cTrick.Checked = Result.Contains(itemObject.Name); cTrick.Text = itemObject.Name; TooltipBuilder.SetTooltip(cTrick, itemObject.TrickTooltip); cTrick.Location = new Point(18, y); cTrick.Size = new Size(pTricks.Width - 50, deltaY); cTrick.CheckStateChanged += cTrick_CheckStateChanged; pTricks.Controls.Add(cTrick); y += deltaY; } CalculateCategoryCheckboxes(); }