/// <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; }
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; }
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); }
internal static Filter CreateDefaultFilter(Type filter_type) { Filter f = (Filter)FormatterServices.GetUninitializedObject(filter_type); return(FilterApi.CreateFilter(filter_type, f.Version, null, null, null)); }