コード例 #1
0
        public List <Edge <T> > Kruskal(Graph <T> graph, List <T> comb = null)
        {
            var edges            = new HashSet <Edge <T> >(graph.Edges).ToList();
            var numberOfVertices = graph.AdjacencyList.Count;

            edges.Sort();

            Dictionary <T, T> parent = new Dictionary <T, T>(numberOfVertices);

            if (comb != null)
            {
                foreach (var station in comb)
                {
                    var start = FindRoot(station, parent);
                    var end   = FindRoot(comb[0], parent);
                    parent[end] = start;
                }
            }
            var spanningTree = new List <Edge <T> >();

            foreach (var edge in edges)
            {
                var startNodeRoot = FindRoot(edge.EdgeFrom, parent);
                var endNodeRoot   = FindRoot(edge.EdgeTo, parent);

                if (!startNodeRoot.Equals(endNodeRoot))
                {
                    spanningTree.Add(edge);
                    parent[endNodeRoot] = startNodeRoot;
                }
            }
            return(spanningTree);
        }
コード例 #2
0
        public void Solve()
        {
            List <int> multiplesOf3 = MultiplesBelow(3, 10);
            List <int> multiplesOf5 = MultiplesBelow(5, 10);

            var multiples = new HashSet <int>(multiplesOf3.Concat(multiplesOf5).ToList()).ToList();

            multiples.Sort();

            Console.WriteLine("Multiples of 3 or 5 under 10: ");

            Console.WriteLine(string.Join(",", multiples.ToArray()));

            Console.WriteLine("Sum: " + multiples.Sum());


            multiplesOf3 = MultiplesBelow(3, 1000);
            multiplesOf5 = MultiplesBelow(5, 1000);

            multiples = new HashSet <int>(multiplesOf3.Concat(multiplesOf5).ToList()).ToList();
            multiples.Sort();

            Console.WriteLine("Multiples of 3 or 5 under 1000: ");

            Console.WriteLine(string.Join(",", multiples.ToArray()));

            Console.WriteLine("Sum: " + multiples.Sum());
        }
コード例 #3
0
        public List <string> GetAllMaterialNames()
        {
            EnsurePredefinedMaterials();

            var list = new HashSet <string>(materials
                                            .Select(o => o.Name)).ToList();

            list.Sort((a, b) =>
            {
                if (materialOrder.Contains(a))
                {
                    if (materialOrder.Contains(b))
                    {
                        return(materialOrder.IndexOf(a).CompareTo(materialOrder.IndexOf(b)));
                    }
                    else
                    {
                        return(-1);
                    }
                }
                else
                {
                    return(1);
                }
            });

            return(list);
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: akhil/EmailAddressExtracter
        private void ExtractEmailAddressButton_Click(object sender, EventArgs e)
        {
            if (!ofd.CheckFileExists)
            {
                MessageBox.Show("Invalid file: " + ofd.FileName);
                return;
            }
            ProcessStartInfo startInfo = grepStartInfo(ofd.FileName);

            Console.WriteLine("Grep arguments: " + startInfo.Arguments);
            var emails = new HashSet <string>(getTextfromProcess(startInfo)).ToList();

            emails.Sort();
            Console.WriteLine("extract email Count" + emails.Count);

            populateEmailView(emailListView, emails.ToArray());

            if (emails.Count > 0)
            {
                emailCountLabel.Text = "Unique Email Count: " + emails.Count;
                downloadEmailAddressButton.Enabled = true;
            }
            else
            {
                emailCountLabel.Text = "No Emails found";
            }
        }
コード例 #5
0
ファイル: ContactService.cs プロジェクト: scfoley/contactsApp
        public async Task <IEnumerable <ContactList> > GetContactsGroups(bool forceReload = false)
        {
            List <ContactList> result = new List <ContactList>();

            // Reload contact list if requested, otherwise reuse
            if (forceReload == true || LoadedContacts == null || !LoadedContacts.Any())
            {
                LoadedContacts = await _platformContactService.GetContacts();
            }

            foreach (var contact in LoadedContacts)
            {
                contact.IsFavorite = false;
            }

            // Get favorite contact
            var favoriteContact = LoadFavoriteContact();

            // Update favorite contact in list
            if (favoriteContact != null)
            {
                var matchingContact = LoadedContacts.FirstOrDefault(x => x.Number == favoriteContact.Number);

                if (matchingContact != null)
                {
                    matchingContact.IsFavorite = true;
                    favoriteContact            = matchingContact;

                    var favoriteContactList = new ContactList
                    {
                        favoriteContact
                    };

                    favoriteContactList.Heading = "Favorite";
                    result.Add(favoriteContactList);
                }
            }

            var headers       = LoadedContacts.Select(x => GetHeading(x));
            var uniqueHeaders = new HashSet <string>(headers).ToList();

            uniqueHeaders.Sort((x, y) => string.Compare(x, y));

            foreach (var uniqueHeader in uniqueHeaders)
            {
                var group = new ContactList
                {
                    Heading = uniqueHeader
                };

                group.AddRange(LoadedContacts.Where(x => !string.IsNullOrEmpty(x.Name) && x.Name[0].ToString() == uniqueHeader));

                result.Add(group);
            }

            return(result);
        }
コード例 #6
0
        private void Validate()
        {
            if (is_dirty)
            {
                is_dirty = false;

                center = vertexs.Average();
                faces.Set(
                    vertexs
                    .Sort(v => - (v - center).GetAngleInDegrees())
                    .CloseLoop()
                    .ConvertConnections((v0, v1) => FaceExtensions.CreatePointsAndInsidePoint(v0, v1, center))
                    );
            }
        }
コード例 #7
0
 public List <string> GetDistinctPositions()
 {
     using (var dbContext = new OTERTConnStr()) {
         try {
             dbContext.Configuration.ProxyCreationEnabled = false;
             List <string> Posotion1 = (from us in dbContext.Distances select us.Position1).ToList();
             List <string> Posotion2 = (from us in dbContext.Distances select us.Position2).ToList();
             Posotion1.AddRange(Posotion2);
             List <string> Positions = new HashSet <string>(Posotion1).ToList();
             Positions.Sort();
             return(Positions);
         }
         catch (Exception) { return(null); }
     }
 }
コード例 #8
0
        public static List <long> FindFactors_slow(long num)
        {
            List <long> factors = new List <long>();

            for (long i = 2; i < num; i++)
            {
                if (num % i == 0)
                {
                    factors.Add(i);
                    //Console.WriteLine("Found a factor: " + i);
                }
            }
            factors = new HashSet <long>(factors).ToList();
            factors.Sort();
            return(factors);
        }
コード例 #9
0
        public static List <long> FindFactors(long num)
        {
            List <long> factors = new List <long>();
            var         square = (long)Math.Sqrt(num);
            long        i = square, j = square;

            while (true)
            {
                var prod = i * j;
                if (prod == num)
                {
                    factors.Add(i);
                    factors.Add(j);
                    //Console.WriteLine("Found a factor: " + i);
                    //Console.WriteLine("Found a factor: " + j);
                }
                if (i == 0)
                {
                    break;
                }
                if (prod >= num)
                {
                    i--;
                    if (i != 0)
                    {
                        j = num / i;
                    }
                }
                else
                {
                    j++;
                }
            }
            factors = new HashSet <long>(factors).ToList();
            factors.Sort();
            return(factors);
        }
コード例 #10
0
        //===============================================================================\\

        public void CleanUpTickTracker(IEnumerable <int> activeIDs)
        {
            if (activeIDs == null || !activeIDs.Any())
            {
                return;
            }

            List <int> ids = new HashSet <int>(activeIDs).ToList <int>();

            ids.Sort();

            // out of sync errors sometimes throw, unity forums
            // say to make a new list from the keys, instead
            // of using dict.keys in the foreach loop
            List <int> keys = new List <int>(this.TickTracker.Keys);

            foreach (int key in keys)
            {
                if (ids.BinarySearch(key) < 0 && this.TickTracker.ContainsKey(key))
                {
                    this.TickTracker.Remove(key);
                }
            }
        }
コード例 #11
0
        void SetupFilters()
        {
            // Game type
            {
                var ddb = panel.GetOrNull <DropDownButtonWidget>("FLT_GAMETYPE_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    // Using list to maintain the order
                    var options = new List <Pair <GameType, string> >
                    {
                        Pair.New(GameType.Any, ddb.GetText()),
                        Pair.New(GameType.Singleplayer, "Singleplayer"),
                        Pair.New(GameType.Multiplayer, "Multiplayer")
                    };
                    var lookup = options.ToDictionary(kvp => kvp.First, kvp => kvp.Second);

                    ddb.GetText     = () => lookup[filter.Type];
                    ddb.OnMouseDown = _ =>
                    {
                        Func <Pair <GameType, string>, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => filter.Type == option.First,
                                () => { filter.Type = option.First; ApplyFilter(); });
                            item.Get <LabelWidget>("LABEL").GetText = () => option.Second;
                            return(item);
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Date type
            {
                var ddb = panel.GetOrNull <DropDownButtonWidget>("FLT_DATE_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    // Using list to maintain the order
                    var options = new List <Pair <DateType, string> >
                    {
                        Pair.New(DateType.Any, ddb.GetText()),
                        Pair.New(DateType.Today, "Today"),
                        Pair.New(DateType.LastWeek, "Last 7 days"),
                        Pair.New(DateType.LastFortnight, "Last 14 days"),
                        Pair.New(DateType.LastMonth, "Last 30 days")
                    };
                    var lookup = options.ToDictionary(kvp => kvp.First, kvp => kvp.Second);

                    ddb.GetText     = () => lookup[filter.Date];
                    ddb.OnMouseDown = _ =>
                    {
                        Func <Pair <DateType, string>, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => filter.Date == option.First,
                                () => { filter.Date = option.First; ApplyFilter(); });

                            item.Get <LabelWidget>("LABEL").GetText = () => option.Second;
                            return(item);
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Duration
            {
                var ddb = panel.GetOrNull <DropDownButtonWidget>("FLT_DURATION_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    // Using list to maintain the order
                    var options = new List <Pair <DurationType, string> >
                    {
                        Pair.New(DurationType.Any, ddb.GetText()),
                        Pair.New(DurationType.VeryShort, "Under 5 min"),
                        Pair.New(DurationType.Short, "Short (10 min)"),
                        Pair.New(DurationType.Medium, "Medium (30 min)"),
                        Pair.New(DurationType.Long, "Long (60+ min)")
                    };
                    var lookup = options.ToDictionary(kvp => kvp.First, kvp => kvp.Second);

                    ddb.GetText     = () => lookup[filter.Duration];
                    ddb.OnMouseDown = _ =>
                    {
                        Func <Pair <DurationType, string>, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => filter.Duration == option.First,
                                () => { filter.Duration = option.First; ApplyFilter(); });
                            item.Get <LabelWidget>("LABEL").GetText = () => option.Second;
                            return(item);
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Map
            {
                var ddb = panel.GetOrNull <DropDownButtonWidget>("FLT_MAPNAME_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    var options = new HashSet <string>(replays.Select(r => r.GameInfo.MapTitle), StringComparer.OrdinalIgnoreCase).ToList();
                    options.Sort(StringComparer.OrdinalIgnoreCase);
                    options.Insert(0, null);                            // no filter

                    var anyText = ddb.GetText();
                    ddb.GetText     = () => string.IsNullOrEmpty(filter.MapName) ? anyText : filter.MapName;
                    ddb.OnMouseDown = _ =>
                    {
                        Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => string.Compare(filter.MapName, option, true) == 0,
                                () => { filter.MapName = option; ApplyFilter(); });
                            item.Get <LabelWidget>("LABEL").GetText = () => option ?? anyText;
                            return(item);
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Players
            {
                var ddb = panel.GetOrNull <DropDownButtonWidget>("FLT_PLAYER_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    var options = new HashSet <string>(replays.SelectMany(r => r.GameInfo.Players.Select(p => p.Name)), StringComparer.OrdinalIgnoreCase).ToList();
                    options.Sort(StringComparer.OrdinalIgnoreCase);
                    options.Insert(0, null);                            // no filter

                    var anyText = ddb.GetText();
                    ddb.GetText     = () => string.IsNullOrEmpty(filter.PlayerName) ? anyText : filter.PlayerName;
                    ddb.OnMouseDown = _ =>
                    {
                        Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => string.Compare(filter.PlayerName, option, true) == 0,
                                () => { filter.PlayerName = option; ApplyFilter(); });
                            item.Get <LabelWidget>("LABEL").GetText = () => option ?? anyText;
                            return(item);
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Outcome (depends on Player)
            {
                var ddb = panel.GetOrNull <DropDownButtonWidget>("FLT_OUTCOME_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    ddb.IsDisabled = () => string.IsNullOrEmpty(filter.PlayerName);

                    // Using list to maintain the order
                    var options = new List <Pair <WinState, string> >
                    {
                        Pair.New(WinState.Undefined, ddb.GetText()),
                        Pair.New(WinState.Lost, "Defeat"),
                        Pair.New(WinState.Won, "Victory")
                    };
                    var lookup = options.ToDictionary(kvp => kvp.First, kvp => kvp.Second);

                    ddb.GetText     = () => lookup[filter.Outcome];
                    ddb.OnMouseDown = _ =>
                    {
                        Func <Pair <WinState, string>, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => filter.Outcome == option.First,
                                () => { filter.Outcome = option.First; ApplyFilter(); });
                            item.Get <LabelWidget>("LABEL").GetText = () => option.Second;
                            return(item);
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Faction (depends on Player)
            {
                var ddb = panel.GetOrNull <DropDownButtonWidget>("FLT_FACTION_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    ddb.IsDisabled = () => string.IsNullOrEmpty(filter.PlayerName);

                    var options = new HashSet <string>(replays.SelectMany(r => r.GameInfo.Players.Select(p => p.FactionName).Where(n => !string.IsNullOrEmpty(n))), StringComparer.OrdinalIgnoreCase).ToList();
                    options.Sort(StringComparer.OrdinalIgnoreCase);
                    options.Insert(0, null);                            // no filter

                    var anyText = ddb.GetText();
                    ddb.GetText     = () => string.IsNullOrEmpty(filter.Faction) ? anyText : filter.Faction;
                    ddb.OnMouseDown = _ =>
                    {
                        Func <string, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => string.Compare(filter.Faction, option, true) == 0,
                                () => { filter.Faction = option; ApplyFilter(); });
                            item.Get <LabelWidget>("LABEL").GetText = () => option ?? anyText;
                            return(item);
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Reset button
            {
                var button = panel.Get <ButtonWidget>("FLT_RESET_BUTTON");
                button.IsDisabled = () => filter.IsEmpty;
                button.OnClick    = () => { filter = new Filter(); ApplyFilter(); };
            }
        }
コード例 #12
0
        void SetupFilters()
        {
            // Game type
            {
                var ddb = panel.GetOrNull<DropDownButtonWidget>("FLT_GAMETYPE_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    // Using list to maintain the order
                    var options = new List<Pair<GameType, string>>
                    {
                        Pair.New(GameType.Any, ddb.GetText()),
                        Pair.New(GameType.Singleplayer, "Singleplayer"),
                        Pair.New(GameType.Multiplayer, "Multiplayer")
                    };
                    var lookup = options.ToDictionary(kvp => kvp.First, kvp => kvp.Second);

                    ddb.GetText = () => lookup[filter.Type];
                    ddb.OnMouseDown = _ =>
                    {
                        Func<Pair<GameType, string>, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => filter.Type == option.First,
                                () => { filter.Type = option.First; ApplyFilter(); });
                            item.Get<LabelWidget>("LABEL").GetText = () => option.Second;
                            return item;
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Date type
            {
                var ddb = panel.GetOrNull<DropDownButtonWidget>("FLT_DATE_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    // Using list to maintain the order
                    var options = new List<Pair<DateType, string>>
                    {
                        Pair.New(DateType.Any, ddb.GetText()),
                        Pair.New(DateType.Today, "Today"),
                        Pair.New(DateType.LastWeek, "Last 7 days"),
                        Pair.New(DateType.LastFortnight, "Last 14 days"),
                        Pair.New(DateType.LastMonth, "Last 30 days")
                    };
                    var lookup = options.ToDictionary(kvp => kvp.First, kvp => kvp.Second);

                    ddb.GetText = () => lookup[filter.Date];
                    ddb.OnMouseDown = _ =>
                    {
                        Func<Pair<DateType, string>, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => filter.Date == option.First,
                                () => { filter.Date = option.First; ApplyFilter(); });

                            item.Get<LabelWidget>("LABEL").GetText = () => option.Second;
                            return item;
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Duration
            {
                var ddb = panel.GetOrNull<DropDownButtonWidget>("FLT_DURATION_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    // Using list to maintain the order
                    var options = new List<Pair<DurationType, string>>
                    {
                        Pair.New(DurationType.Any, ddb.GetText()),
                        Pair.New(DurationType.VeryShort, "Under 5 min"),
                        Pair.New(DurationType.Short, "Short (10 min)"),
                        Pair.New(DurationType.Medium, "Medium (30 min)"),
                        Pair.New(DurationType.Long, "Long (60+ min)")
                    };
                    var lookup = options.ToDictionary(kvp => kvp.First, kvp => kvp.Second);

                    ddb.GetText = () => lookup[filter.Duration];
                    ddb.OnMouseDown = _ =>
                    {
                        Func<Pair<DurationType, string>, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => filter.Duration == option.First,
                                () => { filter.Duration = option.First; ApplyFilter(); });
                            item.Get<LabelWidget>("LABEL").GetText = () => option.Second;
                            return item;
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Map
            {
                var ddb = panel.GetOrNull<DropDownButtonWidget>("FLT_MAPNAME_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    var options = new HashSet<string>(replays.Select(r => r.GameInfo.MapTitle), StringComparer.OrdinalIgnoreCase).ToList();
                    options.Sort(StringComparer.OrdinalIgnoreCase);
                    options.Insert(0, null);	// no filter

                    var anyText = ddb.GetText();
                    ddb.GetText = () => string.IsNullOrEmpty(filter.MapName) ? anyText : filter.MapName;
                    ddb.OnMouseDown = _ =>
                    {
                        Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => string.Compare(filter.MapName, option, true) == 0,
                                () => { filter.MapName = option; ApplyFilter(); });
                            item.Get<LabelWidget>("LABEL").GetText = () => option ?? anyText;
                            return item;
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Players
            {
                var ddb = panel.GetOrNull<DropDownButtonWidget>("FLT_PLAYER_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    var options = new HashSet<string>(replays.SelectMany(r => r.GameInfo.Players.Select(p => p.Name)), StringComparer.OrdinalIgnoreCase).ToList();
                    options.Sort(StringComparer.OrdinalIgnoreCase);
                    options.Insert(0, null);	// no filter

                    var anyText = ddb.GetText();
                    ddb.GetText = () => string.IsNullOrEmpty(filter.PlayerName) ? anyText : filter.PlayerName;
                    ddb.OnMouseDown = _ =>
                    {
                        Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => string.Compare(filter.PlayerName, option, true) == 0,
                                () => { filter.PlayerName = option; ApplyFilter(); });
                            item.Get<LabelWidget>("LABEL").GetText = () => option ?? anyText;
                            return item;
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Outcome (depends on Player)
            {
                var ddb = panel.GetOrNull<DropDownButtonWidget>("FLT_OUTCOME_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    ddb.IsDisabled = () => string.IsNullOrEmpty(filter.PlayerName);

                    // Using list to maintain the order
                    var options = new List<Pair<WinState, string>>
                    {
                        Pair.New(WinState.Undefined, ddb.GetText()),
                        Pair.New(WinState.Lost, "Defeat"),
                        Pair.New(WinState.Won, "Victory")
                    };
                    var lookup = options.ToDictionary(kvp => kvp.First, kvp => kvp.Second);

                    ddb.GetText = () => lookup[filter.Outcome];
                    ddb.OnMouseDown = _ =>
                    {
                        Func<Pair<WinState, string>, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => filter.Outcome == option.First,
                                () => { filter.Outcome = option.First; ApplyFilter(); });
                            item.Get<LabelWidget>("LABEL").GetText = () => option.Second;
                            return item;
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Faction (depends on Player)
            {
                var ddb = panel.GetOrNull<DropDownButtonWidget>("FLT_FACTION_DROPDOWNBUTTON");
                if (ddb != null)
                {
                    ddb.IsDisabled = () => string.IsNullOrEmpty(filter.PlayerName);

                    var options = new HashSet<string>(replays.SelectMany(r => r.GameInfo.Players.Select(p => p.FactionName).Where(n => !string.IsNullOrEmpty(n))), StringComparer.OrdinalIgnoreCase).ToList();
                    options.Sort(StringComparer.OrdinalIgnoreCase);
                    options.Insert(0, null);	// no filter

                    var anyText = ddb.GetText();
                    ddb.GetText = () => string.IsNullOrEmpty(filter.Faction) ? anyText : filter.Faction;
                    ddb.OnMouseDown = _ =>
                    {
                        Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (option, tpl) =>
                        {
                            var item = ScrollItemWidget.Setup(
                                tpl,
                                () => string.Compare(filter.Faction, option, true) == 0,
                                () => { filter.Faction = option; ApplyFilter(); });
                            item.Get<LabelWidget>("LABEL").GetText = () => option ?? anyText;
                            return item;
                        };

                        ddb.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 330, options, setupItem);
                    };
                }
            }

            // Reset button
            {
                var button = panel.Get<ButtonWidget>("FLT_RESET_BUTTON");
                button.IsDisabled = () => filter.IsEmpty;
                button.OnClick = () => { filter = new Filter(); ApplyFilter(); };
            }
        }
コード例 #13
0
ファイル: Main.cs プロジェクト: virall/Part_Number_Log
        private List<string> GetPrefixList()
        {
            List<string> prefix = new List<string>();

            for (int i = 0; i < partnumber_grid.Rows.Count; i++)
            {
                prefix.Add(partnumber_grid.Rows[i].Cells["number"].Value.ToString ().Substring (0,3));
            }

            prefix = new HashSet<string>(prefix).ToList();

            prefix.Add("");

            prefix.Sort();

            return prefix.ToList();
        }