Exemplo n.º 1
0
        private void CheckGenderButton_Click(object sender, RibbonControlEventArgs e)
        {
            SearchWordsForm statusForm = null;

            try
            {
                ThisAddIn.MyApplication.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;

                Word.Document document = ThisAddIn.MyApplication.ActiveDocument;

                if (!RemoveGenderingFields())
                {
                    return;
                }

                statusForm = new SearchWordsForm();
                statusForm.Show();

                XmlDocument   genderingTable = GenderingEngine.GetGenderingTable();
                List <string> words          = GetWords(genderingTable);

                List <Word.Range> foundRanges = GetFoundRanges(statusForm, document, words);

                bool switchToFormFillIn = false;

                foreach (Word.Range foundRange in foundRanges)
                {
                    List <string> alternatives = GetAlternatives(genderingTable, foundRange.Text.ToLowerInvariant());

                    Trace.WriteLine(foundRange.Start);
                    Trace.WriteLine(foundRange.End);

                    bool alreadyGendered = false;
                    foreach (string alternative in alternatives)
                    {
                        if (IsAlreadyGendered(document, foundRange, alternative))
                        {
                            alreadyGendered = true;
                            break;
                        }
                    }

                    if (alternatives.Count != 0 && !alreadyGendered)
                    {
                        CreateDropDown(document, foundRange, alternatives);
                        switchToFormFillIn = true;
                    }
                }

                if (switchToFormFillIn && Is97(document))
                {
                    document.Protect(WdProtectionType.wdAllowOnlyFormFields);
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message, "Fehler", MessageBoxButtons.OK);
            }
            finally
            {
                if (statusForm != null)
                {
                    statusForm.Close();
                }

                ThisAddIn.MyApplication.DisplayAlerts = Word.WdAlertLevel.wdAlertsMessageBox;
            }
        }