public MRACltItemInfo(ITextBoxCore _core, MRACltBox _parent, MRACltItemTypes _type, int _id, string _text) { this.core = _core; this.parent = _parent; this.type = _type; this.id = _id; this.text = _text; this.bolds = new List <MRACltBoldSegment>(); }
public void SetInputText(string inputtext) { List <MRACltItemInfo> _items = new List <MRACltItemInfo>(); List <MRACltBoldSegment> bolds = new List <MRACltBoldSegment>(); double maxsimi = 0.0; int maxsimiid = -1; foreach (ITextKeyCore keyword in keywords) { bolds.Clear(); double _simi = 0.0; if (!Match(inputtext, keyword.Keyword, bolds, ref _simi)) { continue; } if (maxsimiid < 0 || _simi > maxsimi) { maxsimi = _simi; maxsimiid = items.Count(); } MRACltItemInfo item = new MRACltItemInfo(core, this, MRACltItemTypes.Keyword, items.Count(), keyword.Keyword); item.Bolds.AddRange(bolds); _items.Add(item); } foreach (IMRACltItem cltitem in cltsrcs) { bolds.Clear(); double _simi = 0.0; if (!Match(inputtext, cltitem.Text, bolds, ref _simi)) { continue; } if (maxsimiid < 0 || _simi > maxsimi) { maxsimi = _simi; maxsimiid = items.Count(); } MRACltItemTypes itemtype = MRACltItemTypes.Variable; if (cltitem is IMRACltType) { itemtype = MRACltItemTypes.Class; } if (cltitem is IMRACltVar) { itemtype = MRACltItemTypes.Variable; } if (cltitem is IMRACltFunc) { itemtype = MRACltItemTypes.Function; } MRACltItemInfo item = new MRACltItemInfo(core, this, itemtype, items.Count(), cltitem.Text); item.Bolds.AddRange(bolds); _items.Add(item); } if (_items.Count() > 0) { _items.Sort((i1, i2) => i1.Text.CompareTo(i2.Text)); items = _items; ItemsSource = items; this.selectedindex = maxsimiid; if (selectedindex >= 0 && selectedindex < items.Count()) { items[selectedindex].IsSelected = true; ScrollIntoMiddle(selectedindex); } } }