Exemplo n.º 1
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;
            }
        }
Exemplo n.º 2
0
        private void RemoveDefinitionViewItem(DefinitionViewItem definitionViewItem)
        {
            var entryIndex      = definitionViewItem.EntryIndex;
            var definitionIndex = definitionViewItem.DefinitionIndex;

            WordInfo.Entries[entryIndex].Definitions.RemoveAt(definitionIndex);
            lvDefinitions.Items.Remove(definitionViewItem);

            if (WordInfo.Entries[entryIndex].Definitions.Count == 0)
            {
                WordInfo.Entries.RemoveAt(entryIndex);
            }

            for (int currentIndex = 0; currentIndex < lvDefinitions.Items.Count; currentIndex++)
            {
                definitionViewItem = lvDefinitions.Items[currentIndex] as DefinitionViewItem;

                var currentEntryIndex = definitionViewItem.EntryIndex;
                if (currentEntryIndex > entryIndex)
                {
                    definitionViewItem.EntryIndex--;
                }

                var currentDefinitionIndex = definitionViewItem.DefinitionIndex;
                if (currentDefinitionIndex > definitionIndex)
                {
                    definitionViewItem.DefinitionIndex--;
                }
            }

            if (lvExamples.Items.Count > 0 && (lvExamples.Items[0] as ExampleViewItem).DefinitionIndex == definitionIndex)
            {
                lvExamples.Items.Clear();
            }

            rtbOutput.Text = string.Empty;
            ChangeMade     = true;
        }