/// <summary>
        /// on add new filter tree node
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Add_Click(object sender, EventArgs e)
        {
            Type     ft  = ((FilterTypesItem)FilterTypes.SelectedItem).Value;
            Filter   f   = FilterApi.CreateFilter(ft, FilterApi.GetFilterVersion(ft), null, null, null);
            TreeNode stn = FilterTree.SelectedNode;
            TreeNode tn;

            if (stn != null)
            {
                string[] gns = ((Filter)stn.Tag).GetGroupRawNames();
                if (gns.Length > 1)
                {
                    f.InputGroupName = gns[1];
                }
                else
                {
                    f.InputGroupName = gns[0];
                }
                tn = create_tree_node(f, stn.Level + 1);
                stn.Nodes.Add(tn);
                stn.ExpandAll();
            }
            else
            {
                tn = create_tree_node(f, 0);
                FilterTree.Nodes.Add(tn);
            }
            FilterTree.SelectedNode = tn;
            tn.Checked = true;

            FilterTreeChanged = true;
        }
        /// <summary>
        /// on insert new filter tree node
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Insert_Click(object sender, EventArgs e)
        {
            TreeNode stn = (TreeNode)FilterTree.SelectedNode;

            if (stn == null)
            {
                return;
            }
            Filter             f   = FilterApi.CreateDefaultFilter(((FilterTypesItem)FilterTypes.SelectedItem).Value);
            TreeNode           ptn = stn.Parent;
            TreeNodeCollection tns;
            int level;

            if (ptn == null)
            {
                level = 0;
                tns   = FilterTree.Nodes;
            }
            else
            {
                tns   = ptn.Nodes;
                level = ptn.Level + 1;
                string[] gns = ((Filter)ptn.Tag).GetGroupRawNames();
                if (gns.Length > 1)
                {
                    f.InputGroupName = gns[1];
                }
                else
                {
                    f.InputGroupName = gns[0];
                }
            }
            TreeNode tn = create_tree_node(f, level);

            tns.Insert(stn.Index, tn);
            tns.Remove(stn);
            tn.Nodes.Add(stn);

            set_tree_node_color(stn);
            {
                string[] gns = f.GetGroupRawNames();
                if (gns.Length > 1)
                {
                    ((Filter)stn.Tag).InputGroupName = gns[1];
                }
                else
                {
                    ((Filter)stn.Tag).InputGroupName = gns[0];
                }
            }

            tn.ExpandAll();
            FilterTree.SelectedNode = tn;
            tn.Checked = true;

            FilterTreeChanged = true;
        }
        void set_tree_node_if_filter_node_was_changed()
        {
            TreeNode stn = (TreeNode)FilterTree.SelectedNode;

            if (stn == null)
            {
                return;
            }

            if (CurrentFilterControl == null)
            {
                return;
            }

            Filter f1 = (Filter)stn.Tag;

            string d2 = null;

            try
            {
                d2 = CurrentFilterControl.GetUpdatedFilterDefinition();
            }
            catch (Exception e)
            {
                Message.Error(e);
                return;
            }
            if (d2 == null)
            {
                return;
            }

            if (f1.ReadableTypeName == FilterType.Text && f1.InputGroupName == InputGroupName.Text && f1.GetDefinition() == d2 && f1.Comment == FilterComment.Text)
            {
                return;
            }

            FilterTreeChanged = true;
            try
            {
                Filter f2 = FilterApi.CreateFilter(f1.GetType(), f1.Version, d2, InputGroupName.Text, FilterComment.Text);
                set_tree_node(stn, f2);
            }
            catch (Exception ex)
            {
                Message.Error(ex);
            }
            return;
        }
Esempio n. 4
0
        Filter[] get_filters(XmlNode xml_node, Filter parent_filter)
        {
            XmlNodeList xns = xml_node.SelectNodes("Filter");

            Filter[] fs = new Filter[xns.Count];
            int      i  = 0;

            foreach (XmlNode xn in xns)
            {
                string       input_group_name = null;
                XmlAttribute xa = xn.Attributes["input_group"];
                if (xa != null && xa.Value != ROOT_INPUT_GROUP_NAME)
                {//it is not zero node
                    if (parent_filter == null)
                    {
                        throw new Exception("Input group name is sepcified while no parent filter exists");
                    }
                    input_group_name = xa.Value.Trim();
                    if (input_group_name.StartsWith("$"))
                    {
                        input_group_name = input_group_name.Substring(1);
                        int igi = parent_filter.GetGroupIndexByRawName(input_group_name);
                        if (igi < 0)
                        {
                            throw new Exception("Input group name does not exists among group names of parent filter.\nParent filter: " + parent_filter.GetDefinition());
                        }
                    }
                }

                string comment = "";
                xa = xn.Attributes["comment"];
                if (xa != null)
                {
                    comment = xa.Value;
                }

                Filter f = FilterApi.CreateFilter(xn.Attributes["type"].Value.Trim(), xn.Attributes["version"].Value.Trim(), xn.Attributes["definition"].Value, input_group_name, comment);

                fs[i++] = f;
                f.Next  = get_filters(xn, f);
            }
            return(fs);
        }
        private FilterTreeForm()
        {
            InitializeComponent();

            set_tool_tip();

            this.Text = title;
            load_prepared_filter_trees();

            foreach (Type ft in FilterApi.GetFilterTypes())
            {
                FilterTypes.Items.Add(new FilterTypesItem(FilterApi.GetFilterReadableTypeName(ft), ft));
            }
            if (FilterTypes.Items.Count > 0)
            {
                FilterTypes.SelectedIndex = 0;
            }
            else
            {
                Add.Enabled    = false;
                Insert.Enabled = false;
            }
        }
Esempio n. 6
0
        internal static Filter CreateDefaultFilter(Type filter_type)
        {
            Filter f = (Filter)FormatterServices.GetUninitializedObject(filter_type);

            return(FilterApi.CreateFilter(filter_type, f.Version, null, null, null));
        }