Beispiel #1
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Go to the previous footnote in the footnote view
        /// </summary>
        /// <returns></returns>
        /// ------------------------------------------------------------------------------------
        public override ScrFootnote GoToPreviousFootnote()
        {
            CheckDisposed();

            // In case no footnote is selected - can happen when footnote pane is first opened.
            if (CurrentSelection == null)
            {
                return(null);
            }

            // Get the information needed from the current selection
            int     iBook     = CurrentSelection.GetLevelInfoForTag(BookFilter.Tag).ihvo;
            int     iFootnote = CurrentSelection.GetLevelInfoForTag((int)ScrBook.ScrBookTags.kflidFootnotes).ihvo;
            ScrBook book      = BookFilter.GetBook(iBook);

            // Get the previous footnote if it exists
            if (--iFootnote < 0)
            {
                return(null);
            }
            ScrFootnote footnote = new ScrFootnote(m_cache, book.FootnotesOS.HvoArray[iFootnote]);

            ScrollToFootnote(iBook, iFootnote, 0);
            return(footnote);
        }
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Deletes footnotes when there is a range selection.
        /// </summary>
        /// <param name="helper"></param>
        /// ------------------------------------------------------------------------------------
        private void DeleteFootnoteRange(SelectionHelper helper)
        {
            int nTopLevels    = helper.GetNumberOfLevels(SelectionHelper.SelLimitType.Top);
            int nBottomLevels = helper.GetNumberOfLevels(SelectionHelper.SelLimitType.Bottom);

            // Get the index of the book containing the first footnote in the selection.
            // Then get the index of the footnote within that book.
            int iFirstBook =
                helper.GetLevelInfo(SelectionHelper.SelLimitType.Top)[nTopLevels - 1].ihvo;
            int iFirstFootnote =
                helper.GetLevelInfo(SelectionHelper.SelLimitType.Top)[nTopLevels - 2].ihvo;

            // Get the index of the book containing the last footnote in the selection.
            // Then get the index of the footnote within that book.
            int iLastBook =
                helper.GetLevelInfo(SelectionHelper.SelLimitType.Bottom)[nBottomLevels - 1].ihvo;
            int iLastFootnote =
                helper.GetLevelInfo(SelectionHelper.SelLimitType.Bottom)[nBottomLevels - 2].ihvo;

            // Loop through the books containing footnotes in the selection.
            for (int iBook = iFirstBook; iBook <= iLastBook; iBook++)
            {
                IScrBook book = BookFilter.GetBook(iBook);

                int iBeg = iFirstFootnote;
                if (iFirstBook != iLastBook && iBook > iFirstBook)
                {
                    iBeg = 0;
                }

                int iEnd = iLastFootnote;
                if (iFirstBook != iLastBook && iBook < iLastBook)
                {
                    iEnd = book.FootnotesOS.Count - 1;
                }

                // Loop through the footnotes from the selection that are in the
                // current book. Go in reverse order through the collection.
                for (int i = iEnd; i >= iBeg; i--)
                {
                    // TODO: check filter for each HVO
                    IScrFootnote footnote =
                        Cache.ServiceLocator.GetInstance <IScrFootnoteRepository>().GetObject(book.FootnotesOS[i].Hvo);
                    book.FootnotesOS.Remove(footnote);
                }
            }
        }
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Goto the next footnote in the footnote view
        /// </summary>
        /// <returns></returns>
        /// ------------------------------------------------------------------------------------
        public override IScrFootnote GoToNextFootnote()
        {
            CheckDisposed();

            // In case no footnote is selected - can happen when footnote pane is first opened.
            if (CurrentSelection == null)
            {
                return(null);
            }

            // Get the information needed from the current selection
            int      iBook     = CurrentSelection.GetLevelInfoForTag(BookFilter.Tag).ihvo;
            int      iFootnote = CurrentSelection.GetLevelInfoForTag(ScrBookTags.kflidFootnotes).ihvo;
            IScrBook book      = BookFilter.GetBook(iBook);

            // Get the next footnote if it exists
            if (++iFootnote >= book.FootnotesOS.Count)
            {
                return(null);
            }

            ScrollToFootnote(iBook, iFootnote, 0);
            return((IScrFootnote)book.FootnotesOS[iFootnote]);
        }