示例#1
0
 public virtual void OnShow()
 {
     if (ContentViewer != null)
     {
         AttachContentViewer?.Invoke(ContentViewer);
     }
 }
示例#2
0
        public void SetContentViewer(Content <Stream> pageContent)
        {
            if (pageContent == null)
            {
                ContentViewer = null;
                return;
            }

            var viewerProvider = Registry.Pooled <ContentViewerProvider> ();
            var viewer         = viewerProvider.Supports(pageContent.ContentType);

            if (viewer == null)
            {
                var io = Registry.Pooled <StreamContentIoPool> ().Find(pageContent.Data, IoMode.Read);
                if (io != null)
                {
                    var info = io.Detector.Use(pageContent.Data);
                    pageContent.ContentType = info.ContentType;
                }
            }

            if (viewer != null)
            {
                viewer.SetContent(pageContent);
                viewer.BackColor = Colors.White;
            }

            if (ContentViewer != viewer)
            {
                ContentViewer = viewer;

                AttachContentViewer?.Invoke(viewer);

                var display = viewer?.Frontend as IDisplay;
                if (display == null)
                {
                    return;
                }

                display.ZoomState = ZoomState.FitToWidth;
                display.ActionDispatcher.Remove(display.ActionDispatcher.GetAction <KeyScrollAction> ());

                var scroller = display.ActionDispatcher.GetAction <DigidocKeyScrollAction> ();
                if (scroller == null)
                {
                    scroller          = new DigidocKeyScrollAction();
                    scroller.Viewport = () => display.Viewport;
                    display.ActionDispatcher.Add(scroller);
                }
            }
        }