Ejemplo n.º 1
0
        /**
         * Recursively create subtree and add OperatorTypeButtons
         */
        private void PopulateTree(ItemsControl item, OperatorTypeTree typeTree, String prefix, HashSet <string> expandedItems)
        {
            typeTree.Children.Sort(CompareOpsTypeTreeByName);

            foreach (var subtree in typeTree.Children)
            {
                var newSubTreeItem = new TreeViewItem()
                {
                    IsExpanded  = expandedItems.Contains(prefix + subtree.Name),
                    Header      = subtree.Name,
                    DataContext = subtree,
                };

                newSubTreeItem.ContextMenu = CreateContextMenu();
                item.Items.Add(newSubTreeItem);
                PopulateTree(newSubTreeItem, subtree, prefix + subtree.Name, expandedItems);
            }

            typeTree.Operators.Sort(CompareOpsByName);

            foreach (var op in typeTree.Operators)
            {
                var b = new OperatorTypeButton(op, false);
                _operatorTypeButtons.Add(b);
                item.Items.Add(b);
            }
        }
Ejemplo n.º 2
0
        private void UpdateSearchResults()
        {
            var pattern = XSearchTextBox.Text.Select((t, i) => XSearchTextBox.Text.Substring(i, 1))
                          .Where(subString => Regex.Match(subString, "[A-Z0-9_-]", RegexOptions.IgnoreCase) != Match.Empty)
                          .Aggregate(".*", (current, subString) => current + (subString + ".*"));

            var currentProjectName = GetCurrentProjectName();

            var filteredOpEntries = (from metaOpEntry in App.Current.Model.MetaOpManager.MetaOperators
                                     where (Regex.Match(metaOpEntry.Value.Name, pattern, RegexOptions.IgnoreCase) != Match.Empty ||
                                            metaOpEntry.Value.Description.IndexOf(XSearchTextBox.Text, StringComparison.InvariantCultureIgnoreCase) != -1 ||
                                            metaOpEntry.Value.Namespace.IndexOf(XSearchTextBox.Text, StringComparison.InvariantCultureIgnoreCase) != -1
                                            )
                                     let rating = ComputeRelevancy(metaOpEntry.Value, XSearchTextBox.Text, currentProjectName)
                                                  orderby rating
                                                  select new { Op = metaOpEntry.Value, Rating = rating }).Reverse().Take(100);

            XResultList.Items.Clear();
            foreach (var o in filteredOpEntries)
            {
                var button = new OperatorTypeButton(o.Op);
                button.Opacity = IsOperatorRelevantToProject(o.Op) ? 1 : 0.4;
                XResultList.Items.Add(button);
                button.Width = XResultList.ActualWidth;
            }

            XResultList.SelectedIndex = 0;
            SelectedMetaOp            = null;
        }
Ejemplo n.º 3
0
 private static bool IsMatchingOpType(FunctionType opType, OperatorTypeButton otb)
 {
     return((otb.MetaOp.Inputs.Count > 0) &&
            ((otb.MetaOp.Inputs[0].OpPart.Type == opType) ||
             (otb.MetaOp.Inputs[0].OpPart.Type == FunctionType.Generic)));
 }