Exemplo n.º 1
0
 public IndexItem(string text)
 {
     if (string.IsNullOrEmpty(text))
     {
         throw new ArgumentNullException("text");
     }
     m_Text = text;
     string[] parts = text.Split('%');
     m_Word     = parts[0];
     m_ToString = this.Word;
     for (int i = 2; i < parts.Length; ++i)
     {
         m_ToString += (i == 2 ? "   " : "; ");
         m_ToString += PartSpeechUtil.GetReadableName((EE)parts[i].Substring(0, 1)[0]); //  +".";
     }
 }
Exemplo n.º 2
0
        private void AddCardToWordNode(TreeNode tnRootWord, Card card, int partSpeechCounter)
        {
            string cardCaption;

            if (partSpeechCounter > 0) // значит это самые верхние узлы
            {
                String _partSpeechCounterString = GetFineLength((partSpeechCounter++).ToString() + ")", 5);
                if (card.CountOfUsage > 0)                                         // && показывать кол-во употреблений
                {
                    string usage = GetFineLength(card.CountOfUsage.ToString(), 4); // usage.Length == 6
                    cardCaption = string.Format("{0}-{2} {1}", _partSpeechCounterString, card.Synonyms, usage);
                }
                else
                {
                    cardCaption = string.Format("{0} {2} {1}", _partSpeechCounterString, card.Synonyms, "      "); // "      ".length = 6
                }
            }
            else // это вложенные узлы
            {
                cardCaption = string.Format("{0}   {1} ", PartSpeechUtil.GetReadableName(card.PartSpeech), card.Synonyms);
            }

            RichTreeNode partSpeechNode = new RichTreeNode(cardCaption, this.tv1.Font);

            tnRootWord.Nodes.Add(partSpeechNode);
            partSpeechNode.ToolTipText  = card.ToolTipText;
            partSpeechNode.ToolTipStore = card.ToolTipText;
            partSpeechNode.Tag          = card;
            // Meanings
            foreach (string mean in card.Meanings)
            {
                partSpeechNode.Nodes.Add(mean);
            }
            // Examples
            if (card.Examples.Length > 0)
            {
                foreach (string ex in card.Examples)
                {
                    partSpeechNode.Nodes.Add(new RichTreeNode(ex, m_FontForExample));
                    //if (card.Examples.Length == 1)
                    //{
                    //    partSpeechNode.Nodes.Add(new RichTreeNode("example: " + card.Examples[0]));
                    //    //                    partSpeechNode.Nodes.Add(new RichTreeNode(card.Examples[0]));
                    //}
                    //else
                    //{
                    //    TreeNode examples = partSpeechNode.Nodes.Add("examples:");
                    //        examples.Nodes.Add(new RichTreeNode(ex));
                    //    examples.ExpandAll();
                    //}
                }
            }

            // delayNodes - antonym, see also .....
            Dictionary <string, RichTreeNode> delayNodes = new Dictionary <string, RichTreeNode> {
            };

            foreach (Card delayCard in card.Childs.Keys)
            {
                string       delayNodeName = card.Childs[delayCard];
                RichTreeNode delayNode     = null;
                delayNodes.TryGetValue(delayNodeName, out delayNode);
                if (delayNode == null) // если не нашли в коллекции то создадим
                {
                    delayNode = new RichTreeNode(delayNodeName, m_FontForServiceNode);
                    partSpeechNode.Nodes.Add(delayNode);
                    delayNodes.Add(delayNodeName, delayNode);
                }
                delayNode.Tag = new List <Card> {
                };
                ((List <Card>)delayNode.Tag).Add(delayCard);
                delayNode.Nodes.Add(this.sProcessingCaption); // обязательно надо ProcessingCaption, иначе незаполненный узел будет помечатся для тренажера
            }
        }