Example #1
0
        private void OnKeyDown(object sender, KeyEventArgs e)
        {
            if (Settings?.IsReadOnlyMode == true)
            {
                return;
            }
            if (Readonly)
            {
                return;
            }

            if (e.Key == Key.Enter || e.Key == Key.Tab)
            {
                var text = TagCtrl.CaretPosition.GetTextInRun(LogicalDirection.Backward);

                if (string.IsNullOrWhiteSpace(text) && e.Key == Key.Enter)
                {
                    e.Handled = true;
                }
                else if (string.IsNullOrWhiteSpace(text) && e.Key == Key.Tab)
                {
                    e.Handled = false;
                }
                else
                {
                    TagSource.Add(text);
                    e.Handled = true;

                    Changed?.Invoke(this);
                }

                AutocompletePopup.IsOpen = false;
            }
        }
Example #2
0
        private void AutocompleteContent_Selected(object sender, RoutedEventArgs e)
        {
            if (Settings?.IsReadOnlyMode == true)
            {
                return;
            }

            if (AutocompleteContent.SelectedIndex >= 0 && AutocompleteContent.SelectedValue != null)
            {
                var tag = (string)AutocompleteContent.SelectedValue;

                TagSource.Add(tag);

                Changed?.Invoke(this);

                AutocompletePopup.IsOpen = false;
            }
        }
Example #3
0
        private void ShowTagChooser()
        {
            void Update(string name, bool check)
            {
                if (check)
                {
                    if (TagSource.Any(t => t.ToLower() == name.ToLower()))
                    {
                        return;
                    }
                    TagSource.Add(name);
                    TriggerChanged(name);
                }
                else
                {
                    var rm = TagSource.FirstOrDefault(t => t.ToLower() == name.ToLower());
                    if (rm != null)
                    {
                        TagSource.Remove(rm);
                        TriggerChanged(name);
                    }
                }
            }

            List <CheckableTag> tags = Repository.EnumerateAllTags().Distinct().OrderBy(p => p.ToLower()).Select(p => new CheckableTag(p, Update)).ToList();

            if (tags.Count == 0)
            {
                return;                            // no tags
            }
            foreach (var tm in TagSource)
            {
                foreach (var t in tags.Where(p => p.Name.ToLower() == tm))
                {
                    t.Checked = true;
                }
            }

            TagChoosePopupList.ItemsSource = tags;

            TagChoosePopup.IsOpen = true;
        }