Esempio n. 1
0
 public void addFactInRule(Fact fact)
 {
     sendFact.Add(fact);
 }
Esempio n. 2
0
 public void addConcInRule(Fact fact)
 {
     concFact.Add(fact);
 }
Esempio n. 3
0
        private void btnMoreok_Click(object sender, EventArgs e)
        {
            switch (formtype)
            {
                #region добавление домена
            case formType.addDomain:
                if (!form.lbxDomains.Items.Contains(textBox1.Text.Trim().ToUpper()))
                {
                    form.kbase.addDomain(textBox1.Text.Trim().ToUpper());
                    form.lbxDomains.Items.Add(textBox1.Text.Trim().ToUpper());
                    form.cmbVarDomain.Items.Add(textBox1.Text.Trim().ToUpper());
                    this.textBox1.Text = "";
                    textBox1.Select();
                    if (NoMore)
                    {
                        this.DialogResult = DialogResult.OK;
                    }
                }
                else
                {
                    MessageBox.Show("Имя домена уже существует");
                    textBox1.Select();
                    canClose = false;
                }
                break;

                #endregion
                #region переименование домена
            case formType.changeDomain:
                if (!form.lbxDomains.Items.Contains(textBox1.Text.Trim().ToUpper()))
                {
                    int    ind       = form.kbase.domains.FindIndex(delegate(Domain d) { return(d.name == old); });
                    Domain oldDomain = form.kbase.domains[ind];
                    string oldname   = oldDomain.name;
                    oldDomain.name          = textBox1.Text.Trim().ToUpper();
                    form.kbase.domains[ind] = oldDomain;
                    ind = form.lbxDomains.Items.IndexOf(old);
                    form.lbxDomains.Items[ind] = textBox1.Text.Trim().ToUpper();
                    int indVar;
                    int indCmbbox = form.cmbVarDomain.Items.IndexOf(oldname);
                    form.cmbVarDomain.Items[indCmbbox] = textBox1.Text.Trim().ToUpper();
                    while ((indVar = form.kbase.vars.FindIndex(delegate(Variable v) { return(v.domain.name.ToUpper() == oldname.ToUpper()); })) != -1)
                    {
                        Variable var1 = form.kbase.vars[indVar];
                        var1.domain                   = oldDomain;
                        form.kbase.vars[indVar]       = var1;
                        form.lbxDomains.SelectedIndex = ind;
                    }
                    if (NoMore)
                    {
                        this.DialogResult = DialogResult.OK;
                    }
                }
                else
                {
                    MessageBox.Show("Имя домена уже существует");
                    textBox1.Select();
                    canClose = false;
                }
                break;

                #endregion
                #region добавление значения
            case formType.addValue:
                if (!form.lbxValues.Items.Contains(textBox1.Text.Trim().ToUpper()))
                {
                    int ind = form.kbase.domains.FindIndex(delegate(Domain d) { return(d.name == form.lbxDomains.SelectedItem.ToString()); });
                    form.kbase.domains[ind].addValue(textBox1.Text.Trim().ToUpper());
                    form.lbxValues.Items.Add(textBox1.Text.Trim().ToUpper());
                    textBox1.Text = "";
                    textBox1.Select();
                    if (NoMore)
                    {
                        this.DialogResult = DialogResult.OK;
                    }
                }
                else
                {
                    MessageBox.Show("Значение уже существует");
                    textBox1.Select();
                    canClose = false;
                }
                break;

                #endregion
                #region изменение значения
            case formType.changeValue:
                if (!form.lbxValues.Items.Contains(textBox1.Text.Trim().ToUpper()))
                {
                    int indDomain = form.kbase.domains.FindIndex(delegate(Domain d) { return(d.name == form.lbxDomains.SelectedItem.ToString().ToUpper()); });
                    int indValue  = form.kbase.domains[indDomain].values.FindIndex(delegate(string d) { return(d == old); });
                    form.kbase.domains[indDomain].values[indValue] = textBox1.Text.Trim().ToUpper();
                    indValue = form.lbxValues.Items.IndexOf(old.ToUpper());
                    form.lbxValues.Items[indValue] = textBox1.Text.Trim().ToUpper();
                    form.lbxValues.SelectedIndex   = indValue;

                    for (int irule = 0; irule < form.kbase.rules.Count; irule++)
                    {
                        for (int ifact = 0; ifact < form.kbase.rules[irule].sendFact.Count; ifact++)
                        {
                            if (form.kbase.rules[irule].sendFact[ifact].value.ToUpper() == old.ToUpper())
                            {
                                Fact f = form.kbase.rules[irule].sendFact[ifact];
                                f.value = textBox1.Text.Trim().ToUpper();
                                form.kbase.rules[irule].sendFact[ifact] = f;
                            }
                        }

                        for (int ifact = 0; ifact < form.kbase.rules[irule].concFact.Count; ifact++)
                        {
                            if (form.kbase.rules[irule].concFact[ifact].value.ToUpper() == old.ToUpper())
                            {
                                Fact f = form.kbase.rules[irule].concFact[ifact];
                                f.value = textBox1.Text.Trim().ToUpper();
                                form.kbase.rules[irule].concFact[ifact] = f;
                            }
                        }
                    }

                    form.lbxRules.Items.Clear();
                    form.kbase.FillRules(form);
                    textBox1.Text = "";
                    textBox1.Select();
                    if (NoMore)
                    {
                        this.DialogResult = DialogResult.OK;
                    }
                }
                else
                {
                    MessageBox.Show("Значение уже существует");
                    textBox1.Select();
                    canClose = false;
                }
                break;

                #endregion
                #region добавление переменной
            case formType.addVariable:
                if (!form.lbxVariables.Items.Contains(textBox1.Text.Trim().ToUpper()))
                {
                    form.kbase.addVar(textBox1.Text.Trim().ToUpper());
                    Variable v = form.kbase.GetVarByName(textBox1.Text);
                    v.domain   = form.kbase.domains[0];
                    v.question = v.name.ToUpper() + "?";
                    v.type     = varType.query;

                    int ind = form.kbase.GetVarIDByName(textBox1.Text.Trim().ToUpper());
                    form.kbase.vars[ind] = v;
                    form.lbxVariables.Items.Add(textBox1.Text.Trim().ToUpper());
                    form.lbxVariables.SelectedIndex = form.lbxVariables.Items.Count - 1;

                    this.textBox1.Text = "";
                    textBox1.Select();
                    if (NoMore)
                    {
                        this.DialogResult = DialogResult.OK;
                    }
                }
                else
                {
                    MessageBox.Show("Такое имя переменной уже существует");
                    textBox1.Select();
                    canClose = false;
                }
                break;

                #endregion
                #region изменение переменной
            case formType.changeVariable:
                if (!form.lbxVariables.Items.Contains(textBox1.Text.Trim().ToUpper()))
                {
                    int      indVar     = form.kbase.vars.FindIndex(delegate(Variable v) { return(v.name == form.lbxVariables.SelectedItem.ToString()); });
                    Variable var        = form.kbase.vars[indVar];
                    string   oldnamevar = var.name;
                    var.name = textBox1.Text.Trim().ToUpper();
                    form.kbase.vars[indVar] = var;
                    int lbxIndVar = form.lbxVariables.Items.IndexOf(oldnamevar);
                    form.lbxVariables.Items[lbxIndVar] = textBox1.Text.Trim().ToUpper();
                    form.lbxVariables.SelectedIndex    = lbxIndVar;
                    form.tbVarName.Text = textBox1.Text.Trim().ToUpper();
                    if (var.question == oldnamevar + "?")
                    {
                        var.question         = textBox1.Text.Trim().ToUpper() + "?";
                        form.tbQuestion.Text = var.question;
                    }
                    for (int irule = 0; irule < form.kbase.rules.Count; irule++)
                    {
                        for (int ifact = 0; ifact < form.kbase.rules[irule].sendFact.Count; ifact++)
                        {
                            if (form.kbase.rules[irule].sendFact[ifact].varName.ToUpper() == old.ToUpper())
                            {
                                Fact f = form.kbase.rules[irule].sendFact[ifact];
                                f.varName = textBox1.Text.Trim().ToUpper();
                                form.kbase.rules[irule].sendFact[ifact] = f;
                            }
                        }

                        for (int ifact = 0; ifact < form.kbase.rules[irule].concFact.Count; ifact++)
                        {
                            if (form.kbase.rules[irule].concFact[ifact].varName.ToUpper() == old.ToUpper())
                            {
                                Fact f = form.kbase.rules[irule].concFact[ifact];
                                f.varName = textBox1.Text.Trim().ToUpper();
                                form.kbase.rules[irule].concFact[ifact] = f;
                            }
                        }
                    }

                    form.lbxRules.Items.Clear();
                    form.kbase.FillRules(form);

                    this.textBox1.Text = "";
                    textBox1.Select();
                    if (NoMore)
                    {
                        this.DialogResult = DialogResult.OK;
                    }
                }
                else
                {
                    MessageBox.Show("Такое имя переменной уже существует");
                    textBox1.Select();
                    canClose = false;
                }
                break;
                #endregion
            }
        }