Esempio n. 1
0
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!manual || MainForm.MustClose)
            {
                return;
            }

            MainForm.StillWorking();
            this.makeSelectedCount();
            if (listView1.SelectedItems.Count != 1)
            {
                return;
            }

            RabTreeData dt = Engine.db().rabbitGenTree((listView1.SelectedItems[0].Tag as AdultRabbit).ID);

            if (dt != null && dt.Name != null)
            {
                TreeNode tn = tvGens.InsertNode(dt, true);
                tn.ForeColor = Color.Blue;
            }
            else
            {
                MessageBox.Show(@"Не возможно найти информацию по данной записи.
Возможно данного кролика списал другой сетевой пользователь программы.
Во избежании проблем, придется обновить Лист поголовья", "Не могу найти запись");
                _rsb.Run();
            }
        }
Esempio n. 2
0
        public TreeNode InsertNode(RabTreeData data, bool append)
        {
            if (!append)
            {
                this.Nodes.Clear();
            }
            else
            {
                //проверка на уже существование данной ветки
                for (int i = 0; i < this.Nodes.Count;)
                {
                    if ((this.Nodes[i].Tag != null) && (this.Nodes[i].Tag as RabTreeData).ID == data.ID)
                    {
                        this.Nodes[i].Remove();
                        continue;
                    }
                    i++;
                }
                //удаляем последнюю если
                while (this.Nodes.Count >= _maxCnt)
                {
                    this.Nodes.RemoveAt(this.Nodes.Count - 1);
                }
            }
            //TreeNode tn = this.Nodes.Insert(0, data.NameFormat(NameFormat));
            TreeNode tn = insertNode(null, data);

            tn.ExpandAll();
            tn.EnsureVisible();
            return(tn);
        }
Esempio n. 3
0
        public GenomViewForm(int rFemaleId, int rMaleId)
            : this()
        {
            //RabNetEngRabbit rb1 = Engine.get().getRabbit(r1);
            //RabNetEngRabbit rb2 = Engine.get().getRabbit(r2);
            //MakeGenesis(rb1.Breed, rb2.Breed, rb1.Genom, rb2.Genom, rb1.FullName, rb2.FullName);
            RabTreeData femaleTree = Engine.db().rabbitGenTree(rFemaleId);
            TreeNode    fTn        = tvFemale.InsertNode(femaleTree);

            lbFemaleName.Text  += femaleTree.Name;
            lbFemaleBreed.Text += _brds[femaleTree.BreedId];

            RabTreeData maleTree = Engine.db().rabbitGenTree(rMaleId);
            TreeNode    mTn      = tvMale.InsertNode(maleTree);

            lbMaleName.Text  += maleTree.Name;
            lbMaleBreed.Text += _brds[maleTree.BreedId];

            checkRootInbreeding(fTn, mTn);

            string childName = getChildrenName(femaleTree.NameId, maleTree.NameId);

            lbChildName.Text += childName;
            TreeNode childNode = new TreeNode(childName);

            childNode.Nodes.Add(fTn.Clone() as TreeNode);
            childNode.Nodes.Add(mTn.Clone() as TreeNode);
            tvChildren.Nodes.Add(childNode);
            tvChildren.ExpandAll();

            lbInbreeding.Text += _inbreeding ? "ДА" : "НЕТ";
        }
Esempio n. 4
0
        private TreeNode insertNode(TreeNode parentNode, RabTreeData data)
        {
            TreeNode tn;

            if (parentNode == null)
            {
                tn = this.Nodes.Insert(0, data.NameFormat(NameFormat));
            }
            else
            {
                tn = parentNode.Nodes.Add(data.NameFormat(NameFormat));
            }

            if (_showStateColors)
            {
                if (data.State == RabAliveState.DEAD)
                {
                    tn.ForeColor = DEAD;
                }
                else if (data.State == RabAliveState.IMPORTED_ASCENDANT)
                {
                    tn.ForeColor = IA;
                }
            }

            if (data.Mother != null)
            {
                //TreeNode n = parentNode.Nodes.Add(data.Mother.NameFormat(NameFormat));
                //insertNode(n, data.Mother);
                insertNode(tn, data.Mother);
            }
            if (data.Father != null)
            {
                //TreeNode n = parentNode.Nodes.Add(data.Father.NameFormat(NameFormat));
                //insertNode(n, data.Father);
                insertNode(tn, data.Father);
            }
            tn.Tag = data;
            return(tn);
        }
Esempio n. 5
0
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!manual || listView1.SelectedItems.Count == 0)
            {
                return;
            }

            setMenu();
            makeSelectedCount();
            if (listView1.SelectedItems.Count != 1)
            {
                return;
            }

            RabTreeData dt = Engine.db().rabbitGenTree((int)listView1.SelectedItems[0].Tag);

            if (dt != null)
            {
                TreeNode tn = tvGens.InsertNode(dt, true);
                tn.ForeColor = Color.Blue;
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Получает родословную кролика с заданным rabId
        /// </summary>
        /// <param name="rabId">ID кролика</param>
        /// <param name="con"></param>
        /// <param name="lineage">Стэк родословной для предотвращения рекурсии</param>
        /// <returns></returns>
        private static RabTreeData getRabbitGenTree(MySqlConnection con, int rabId, int birthplace, int nameId, Stack <int> lineage)//, int level)
        {
            if (rabId == 0)
            {
                return(null);
            }
            //проверка на рекурсию, которая могла возникнуть после конвертации из старой mia-файла
            if (lineage.Count > 700)
            {
                //_logger.Warn("cnt:" + lineage.Count.ToString() + " we have suspect infinity inheritance loop: " + String.Join(",", Array.ConvertAll<int, string>(lineage.ToArray(), new Converter<int, string>(convIntToString))));
                return(null);
            }
            lineage.Push(rabId);
            MySqlCommand    cmd    = new MySqlCommand("", con);
            MySqlDataReader rd     = null;
            RabAliveState   state  = RabAliveState.ALIVE;
            bool            inFarm = true;
            string          query  = @"SELECT
        r_id,
        {0:s} name,
        Coalesce(r_name,0) AS r_name,
        Coalesce(r_surname,0) AS r_surname,
        Coalesce(r_secname,0) AS r_secname,      
        Coalesce(r_mother, 0) AS r_mother,
        Coalesce(r_father, 0) AS r_father,
        r_bon,
        r_born,
        r_breed,
        b_short_name,
        TO_DAYS(NOW())-TO_DAYS(r_born) age,
        Coalesce(r_birthplace,0) birthplace
    FROM {1:s} 
        INNER JOIN breeds ON b_id = r_breed
    WHERE r_id={2:d} LIMIT 1;";

#if !DEMO
            if (birthplace != 0)  //если ищем импортированного кролика
            {
                List <OneImport> lst = Import.Search(con, new Filters(Filters.RAB_ID, rabId.ToString()));
                inFarm = lst.Count > 0;                                       ///если кролик не был импортирован в поголовье
                ///может возникнуть ситуация, что импортированный кролик имеет id родителя, который содержится и в import_ascendants и в imports
                if (inFarm && Import.AscendantExists(con, rabId, birthplace)) ///устранение неоднозначности
                {
                    inFarm = RabbitGetter.GetRabbit(con, rabId).NameID == nameId;
                }
            }
#endif

            if (inFarm)
            {
                cmd.CommandText = String.Format(query, "rabname(r_id,1)", "rabbits", rabId);
                rd = cmd.ExecuteReader();

                if (!rd.HasRows)
                {
                    rd.Close();
                    cmd.CommandText = String.Format(query, "deadname(r_id,1)", "dead", rabId);
                    rd    = cmd.ExecuteReader();
                    state = RabAliveState.DEAD;
                }
            }

            if (!inFarm)
            {
                cmd.CommandText = String.Format(query, String.Format("ascname(r_id,{0:d},1)", birthplace), "import_ascendants", rabId);
                rd    = cmd.ExecuteReader();
                state = RabAliveState.IMPORTED_ASCENDANT;
            }

            RabTreeData res = null;
            if (rd != null && rd.Read())
            {
                res = new RabTreeData(
                    rd.GetInt32("r_id"),
                    rd.GetString("name"),
                    rd.GetInt32("r_name"),
                    rd.GetDateTime("r_born"),
                    rd.GetInt32("r_breed")
                    );
                res.Bon            = Rabbit.GetFBon(rd.GetString("r_bon"), true);
                res.BreedShortName = rd.GetString("b_short_name");
                res.BirthPlace     = rd.GetInt32("birthplace");
                int mom     = rd.GetInt32("r_mother");
                int dad     = rd.GetInt32("r_father");
                int surname = rd.GetInt32("r_surname");
                int secname = rd.GetInt32("r_secname");
                rd.Close();

                res.State = state;
                RabTreeData m = getRabbitGenTree(con, mom, birthplace, surname, lineage);
                RabTreeData d = getRabbitGenTree(con, dad, birthplace, secname, lineage);
                if (m != null)
                {
                    res.Mother = m;
                }
                if (d != null)
                {
                    res.Father = d;
                }
            }
            rd.Close();
            return(res);
        }
Esempio n. 7
0
 public TreeNode InsertNode(RabTreeData data)
 {
     return(InsertNode(data, false));
 }