private void listBoxRules_SelectedIndexChanged(object sender, EventArgs e) { if (ruleListUpdated) { return; } if (listBoxRules.SelectedIndex < 0) { groupBoxRule.Enabled = false; return; } groupBoxRule.Enabled = true; selectedRule = listBoxRules.SelectedItem as GadgetRuleData; textBoxRuleName.Text = selectedRule.Name; comboBoxRuleSign.SelectedItem = selectedRule.Operation.ToString(); comboBoxRuleLayer.SelectedItem = selectedRule.Layer; comboBoxRuleParameters.SelectedItem = selectedRule.Parameter.ToString(); textBoxRuleImage.Text = selectedRule.FileName; textBoxRuleValue.Text = selectedRule.RegexValue; }
private void toolStripButton1_Click(object sender, EventArgs e) { GadgetRuleData rule = new GadgetRuleData(); rule.Name = "Rule " + listBoxRules.Items.Count; gadgetData.Rules.Add(rule); UpdateRules(); listBoxRules.SelectedItem = rule; }
private bool ProcessRule(GadgetRuleData rule) { string value = this.data.Tags.Find(x => x.Parameter == rule.Parameter).Value; if (value == null) return false; int int_value = 0; int i_res = 0; bool is_int = int.TryParse(rule.RegexValue, out int_value); Match mc = Regex.Match(value,@"\d+"); switch (rule.Operation) { case Operation.Equal: if (is_int && int.TryParse(value, out i_res)) { return i_res == int_value; }else if(mc.Success) { return int.Parse(mc.Value) == int_value; } else return String.Compare(rule.RegexValue, value, true) == 0; case Operation.Great: if (is_int && int.TryParse(value, out i_res)) return i_res > int_value;else if (mc.Success) return int.Parse(mc.Value) > int_value; break; case Operation.GreatEqual: if (is_int && int.TryParse(value, out i_res)) return i_res >= int_value; else if (mc.Success) return int.Parse(mc.Value) >= int_value; break; case Operation.Less: if (is_int && int.TryParse(value, out i_res)) return i_res < int_value; else if (mc.Success) return int.Parse(mc.Value) < int_value; break; case Operation.LessEqual: if (is_int && int.TryParse(value, out i_res)) return i_res <= int_value; else if (mc.Success) return int.Parse(mc.Value) <= int_value; break; } return false; }