Exemplo n.º 1
0
    void _SortAndSetControlItems()
    {
        _av.Sort((c1, c2) => {
            int diff = c1.moveDown - c2.moveDown;
            if (diff != 0)
            {
                return(diff);
            }

            if (_groupsEnabled)
            {
                diff = c1.group - c2.group;
                if (diff != 0)
                {
                    return(diff);
                }
                if (_groups[c1.group].NE())
                {
                    CiItemKind k1 = c1.kind, k2 = c2.kind;
                    //let EnumMember be by Enum. In CiItemKind they are not adjacent, it would be not good.
                    if (k1 > CiItemKind.Enum)
                    {
                        if (k1 == CiItemKind.EnumMember)
                        {
                            k1 = CiItemKind.Enum + 1;
                        }
                        else
                        {
                            k1++;
                        }
                    }
                    if (k2 > CiItemKind.Enum)
                    {
                        if (k2 == CiItemKind.EnumMember)
                        {
                            k2 = CiItemKind.Enum + 1;
                        }
                        else
                        {
                            k2++;
                        }
                    }
                    diff = k1 - k2;
                    if (diff != 0)
                    {
                        return(diff);
                    }
                }
            }

            int r = string.Compare(c1.ci.SortText, c2.ci.SortText, StringComparison.OrdinalIgnoreCase);
            if (r == 0)
            {
                r = CiSnippets.Compare(c1, c2);
                //if (r == 0) r = string.Compare(c1.Text, c2.Text, StringComparison.OrdinalIgnoreCase);
            }
            return(r);
        });

        CiComplItem prev = null;

        foreach (var v in _av)
        {
            var group = _groupsEnabled && (prev == null || v.group != prev.group) ? _groups[v.group] : null;
            v.SetDisplayText(group);
            prev = v;
        }

        _tv.SetItems(_av);
    }
Exemplo n.º 2
0
        }                          //root

        public _Item(string text, CiItemKind kind, int pos)
        {
            _text = text;
            _pos  = pos;
            _kind = kind;
        }