Пример #1
0
        private void _go_to_page(IVisio.Pages pages, Models.PageRelativePosition flags, VisioScripting.CommandTarget cmdtarget)
        {
            if (pages == null)
            {
                throw new System.ArgumentNullException(nameof(pages));
            }

            if (pages.Count < 2)
            {
                throw new VisioAutomation.Exceptions.VisioOperationException("Only 1 page available. Navigation not possible.");
            }

            int       cur_index = cmdtarget.ActivePage.Index;
            const int min_index = 1;
            int       max_index = pages.Count;
            int       new_index = PageCommands.move_in_range(cur_index, min_index, max_index, flags);

            if (cur_index != new_index)
            {
                var doc_pages = cmdtarget.ActiveDocument.Pages;
                var page      = doc_pages[new_index];

                var active_window = cmdtarget.Application.ActiveWindow;
                active_window.Page = page;
            }
        }
Пример #2
0
        internal static int move_in_range(int cur, int min, int max, Models.PageRelativePosition relative_position)
        {
            if (max < min)
            {
                throw new System.ArgumentOutOfRangeException(nameof(max));
            }

            if (cur < min)
            {
                throw new System.ArgumentOutOfRangeException(nameof(cur));
            }

            if (cur > max)
            {
                throw new System.ArgumentOutOfRangeException(nameof(cur));
            }

            switch (relative_position)
            {
            case VisioScripting.Models.PageRelativePosition.Next:
                return(System.Math.Min(cur + 1, max));

            case VisioScripting.Models.PageRelativePosition.Previous:
                return(System.Math.Max(cur - 1, min));

            case VisioScripting.Models.PageRelativePosition.First:
                return(min);

            case VisioScripting.Models.PageRelativePosition.Last:
                return(max);

            default:
                throw new System.ArgumentOutOfRangeException(nameof(relative_position));
            }
        }
Пример #3
0
        public void SetActivePage(VisioScripting.TargetDocument targetdoc, Models.PageRelativePosition flags)
        {
            targetdoc = targetdoc.ResolveToDocument(this._client);

            var docpages = targetdoc.Document.Pages;

            if (docpages.Count < 2)
            {
                return;
            }

            var pages = docpages;

            var cmdtarget = this._client.GetCommandTarget(CommandTargetFlags.RequirePage);

            this._go_to_page(pages, flags, cmdtarget);
        }