コード例 #1
0
        private static List <CambridgeWordInfo.Block> ParseDefBlocksFromEntryElement(IParentNode entryElement)
        {
            var blocks = new List <CambridgeWordInfo.Block>();

            foreach (var defBlockElement in entryElement.QuerySelectorAll("div.def-block"))
            {
                var definitionTextElement = defBlockElement.QuerySelector("p > b.def");
                if (definitionTextElement == null)
                {
                    continue;
                }

                var block = new CambridgeWordInfo.Block();
                block.Definition = Regex.Replace(definitionTextElement.TextContent, @"\s+", " ");
                if (block.Definition.EndsWith(": "))
                {
                    block.Definition = block.Definition.Substring(0, block.Definition.Length - 2);
                }

                var exampleElements = defBlockElement.QuerySelectorAll("span > div.examp");
                if (exampleElements.Length > 0)
                {
                    block.Examples = new List <string>(exampleElements.Select(exampleElement => exampleElement.TextContent.Trim()));
                }

                blocks.Add(block);
            }
            return(blocks);
        }
コード例 #2
0
        private void tsmiAddDefinition_Click(object sender, EventArgs e)
        {
            var definitionViewItem = new DefinitionViewItem();

            lvDefinitions.Items.Add(definitionViewItem);

            using (var dialog = new EditWordDefinitionForm(WordInfo.Entries.Count, tbInputWord.Text))
            {
                if (dialog.ShowDialog() != DialogResult.OK || string.IsNullOrWhiteSpace(dialog.Definition))
                {
                    RemoveDefinitionViewItem(definitionViewItem);
                    return;
                }

                ProcessEditWordDefinitionDialog(dialog);

                var definition = new CambridgeWordInfo.Block()
                {
                    Definition = dialog.Definition
                };
                WordInfo.Entries[dialog.EntryIndex].Definitions.Add(definition);
                WordInfo.Entries[dialog.EntryIndex].Label = dialog.Label;

                definitionViewItem.EntryIndex      = dialog.EntryIndex;
                definitionViewItem.DefinitionIndex = WordInfo.Entries[dialog.EntryIndex].Definitions.Count - 1;
                definitionViewItem.Tag             = lvDefinitions.Items.Count - 1;
                definitionViewItem.WordInfo        = WordInfo;
                ChangeMade = true;
            }
        }