예제 #1
0
 internal void RaiseCurrentViewChangedEvent(FlowDocumentReaderViewingMode newMode, FlowDocumentReaderViewingMode oldMode)
 {
     if (newMode != oldMode)
     {
         base.RaisePropertyChangedEvent(MultipleViewPatternIdentifiers.CurrentViewProperty, this.ConvertModeToViewId(newMode), this.ConvertModeToViewId(oldMode));
     }
 }
예제 #2
0
        /// <summary>
        /// Initialises a new instance of the MainWindow class.
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();

            Model.UserApplicationStore.Load();

            // restore the user preferences
            Size  lastSize     = Model.UserApplicationStore.Store.LastWindowSize;
            Point lastPosition = Model.UserApplicationStore.Store.LastWindowPosition;
            FlowDocumentReaderViewingMode mode = Model.UserApplicationStore.Store.ViewingMode;

            if (lastSize != null && !lastSize.IsEmpty && lastSize != new Size(0, 0))
            {
                this.Height = lastSize.Height;
                this.Width  = lastSize.Width;
            }

            if (lastPosition != null && !(lastPosition.X == 0 && lastPosition.Y == 0))
            {
                this.Top  = lastPosition.X;
                this.Left = lastPosition.Y;
            }

            this.pageViewer.ViewingMode = mode;

            if (Model.UserApplicationStore.Store.IsMaximized)
            {
                this.WindowState = System.Windows.WindowState.Maximized;
            }

            this.DataContext             = this;
            this.forward.DataContext     = this.back.DataContext = this.userViewingHistory;
            this.recentFiles.DataContext = Model.UserApplicationStore.Store.RecentFiles;

            this.searchEntryTimer.AutoReset = true;
            this.searchEntryTimer.Elapsed  += new System.Timers.ElapsedEventHandler(PerformSearch);

            this.InitialiseStartScreen();

            string[] args = ((App)App.Current).Arguments;
            if (args != null && args.Length > 0)
            {
                // validate this is a file we are looking for
                if (System.IO.File.Exists(args[0]))
                {
                    // we only allow ldproj files to open here
                    if (System.IO.Path.GetExtension(args[0]) == ".ldproj")
                    {
                        LiveDocumentorFile.Load(args[0]);
                        this.startpage.Visibility = System.Windows.Visibility.Hidden;
                        this.UpdateView();
                    }
                }
            }
        }
예제 #3
0
        /// <summary>Returns the name of a control-specific view.</summary>
        /// <param name="viewId">The ID of a view. </param>
        /// <returns>The name of a control-specific view.</returns>
        // Token: 0x0600268A RID: 9866 RVA: 0x000B7598 File Offset: 0x000B5798
        string IMultipleViewProvider.GetViewName(int viewId)
        {
            string result = string.Empty;

            if (viewId >= 0 && viewId <= 2)
            {
                FlowDocumentReaderViewingMode flowDocumentReaderViewingMode = this.ConvertViewIdToMode(viewId);
                if (flowDocumentReaderViewingMode == FlowDocumentReaderViewingMode.Page)
                {
                    result = SR.Get("FlowDocumentReader_MultipleViewProvider_PageViewName");
                }
                else if (flowDocumentReaderViewingMode == FlowDocumentReaderViewingMode.TwoPage)
                {
                    result = SR.Get("FlowDocumentReader_MultipleViewProvider_TwoPageViewName");
                }
                else if (flowDocumentReaderViewingMode == FlowDocumentReaderViewingMode.Scroll)
                {
                    result = SR.Get("FlowDocumentReader_MultipleViewProvider_ScrollViewName");
                }
            }
            return(result);
        }
예제 #4
0
        //-------------------------------------------------------------------
        //
        //  IMultipleViewProvider Members
        //
        //-------------------------------------------------------------------

        #region IMultipleViewProvider Members

        /// <summary>
        /// <see cref="IMultipleViewProvider.GetViewName"/>
        /// </summary>
        string IMultipleViewProvider.GetViewName(int viewId)
        {
            string name = string.Empty;

            if (viewId >= 0 && viewId <= 2)
            {
                FlowDocumentReaderViewingMode mode = ConvertViewIdToMode(viewId);
                if (mode == FlowDocumentReaderViewingMode.Page)
                {
                    name = SR.Get(SRID.FlowDocumentReader_MultipleViewProvider_PageViewName);
                }
                else if (mode == FlowDocumentReaderViewingMode.TwoPage)
                {
                    name = SR.Get(SRID.FlowDocumentReader_MultipleViewProvider_TwoPageViewName);
                }
                else if (mode == FlowDocumentReaderViewingMode.Scroll)
                {
                    name = SR.Get(SRID.FlowDocumentReader_MultipleViewProvider_ScrollViewName);
                }
            }
            return(name);
        }
예제 #5
0
 /// <summary>
 /// Converts viewing mode to view id.
 /// </summary>
 private int ConvertModeToViewId(FlowDocumentReaderViewingMode mode)
 {
     return((int)mode);
 }
예제 #6
0
 public static void SetSuggestedViewingMode(DependencyObject obj, FlowDocumentReaderViewingMode value)
 {
     obj.SetValue(SuggestedViewingModeProperty, value);
 }
예제 #7
0
        //--------------------------------------------------------------------
        // 
        //  Private Methods 
        //
        //------------------------------------------------------------------- 

        #region Private Methods

        /// <summary> 
        /// Handler for the SwitchViewingMode command.
        /// </summary> 
        /// <param name="viewingMode">Viewing mode.</param> 
        protected virtual void SwitchViewingModeCore(FlowDocumentReaderViewingMode viewingMode)
        { 
            ITextSelection textSelection = null;
            ContentPosition contentPosition = null;
            IFlowDocumentViewer viewer;
            FrameworkElement feViewer; 
            bool isKeyboardFocusWithin;
            DependencyObject focusedElement = null; 
 
            if (_contentHost != null)
            { 
                // Remember the current keyboard focus state.
                isKeyboardFocusWithin = IsKeyboardFocusWithin;

                // Detach old viewer 
                viewer = _contentHost.Child as IFlowDocumentViewer;
                if (viewer != null) 
                { 
                    // Remember focused element, if the focus is within the Document.
                    // After switching to a different viewer, this focus needs to be restored. 
                    if (isKeyboardFocusWithin)
                    {
                        bool isFocusWithinDocument = IsFocusWithinDocument();
                        if (isFocusWithinDocument) 
                        {
                            focusedElement = Keyboard.FocusedElement as DependencyObject; 
                        } 
                    }
 
                    // Retrieve the current viewing state from the old viewer.
                    textSelection = viewer.TextSelection;
                    contentPosition = viewer.ContentPosition;
 
                    // Detach old viewer
                    DetachViewer(viewer); 
                } 

                viewer = GetViewerFromMode(viewingMode); 
                feViewer = (FrameworkElement)viewer;
                if (viewer != null)
                {
                    // Attach new viewer 
                    _contentHost.Child = feViewer;
                    AttachViewer(viewer); 
 
                    // Restore viewing state.
                    viewer.TextSelection = textSelection; 
                    viewer.ContentPosition = contentPosition;

                    // Bring the focus to previously focused element within the document
                    // or to the current viewer. 
                    if (isKeyboardFocusWithin)
                    { 
                        if (focusedElement is UIElement) 
                        {
                            ((UIElement)focusedElement).Focus(); 
                        }
                        else if (focusedElement is ContentElement)
                        {
                            ((ContentElement)focusedElement).Focus(); 
                        }
                        else 
                        { 
                            feViewer.Focus();
                        } 
                    }
                }

                // Viewer changes invalidates following properties: 
                //      - PageCount
                //      - PageNumber 
                //      - CanGoToPreviousPage 
                //      - CanGoToNextPage
                UpdateReadOnlyProperties(true, true); 
            }
        }
예제 #8
0
 /// <summary> 
 /// Handler for the SwitchViewingMode command. 
 /// </summary>
 /// <param name="viewingMode">Viewing mode.</param> 
 protected virtual void OnSwitchViewingModeCommand(FlowDocumentReaderViewingMode viewingMode)
 {
     SwitchViewingModeCore(viewingMode);
 } 
예제 #9
0
 public JournalState(int contentPosition, LogicalDirection contentPositionDirection, double zoom, FlowDocumentReaderViewingMode viewingMode) 
 {
     ContentPosition = contentPosition;
     ContentPositionDirection = contentPositionDirection;
     Zoom = zoom; 
     ViewingMode = viewingMode;
 } 
 protected virtual new void SwitchViewingModeCore(FlowDocumentReaderViewingMode viewingMode)
 {
 }
 /// <summary>
 /// Converts viewing mode to view id.
 /// </summary>
 private int ConvertModeToViewId(FlowDocumentReaderViewingMode mode)
 {
     return (int)mode;
 }
예제 #12
0
 /// <summary> 
 /// Retrieves viewer form specified ViewingMode.
 /// </summary> 
 private IFlowDocumentViewer GetViewerFromMode(FlowDocumentReaderViewingMode mode) 
 {
     IFlowDocumentViewer viewer = null; 
     switch (mode)
     {
         case FlowDocumentReaderViewingMode.Page:
             if (_pageViewer == null) 
             {
                 _pageViewer = new ReaderPageViewer(); 
                 _pageViewer.SetResourceReference(StyleProperty, PageViewStyleKey); 
                 _pageViewer.Name = "PageViewer";
                 CommandManager.AddPreviewCanExecuteHandler(_pageViewer, new CanExecuteRoutedEventHandler(PreviewCanExecuteRoutedEventHandler)); 
             }
             viewer = _pageViewer;
             break;
         case FlowDocumentReaderViewingMode.TwoPage: 
             if (_twoPageViewer == null)
             { 
                 _twoPageViewer = new ReaderTwoPageViewer(); 
                 _twoPageViewer.SetResourceReference(StyleProperty, TwoPageViewStyleKey);
                 _twoPageViewer.Name = "TwoPageViewer"; 
                 CommandManager.AddPreviewCanExecuteHandler(_twoPageViewer, new CanExecuteRoutedEventHandler(PreviewCanExecuteRoutedEventHandler));
             }
             viewer = _twoPageViewer;
             break; 
         case FlowDocumentReaderViewingMode.Scroll:
             if (_scrollViewer == null) 
             { 
                 _scrollViewer = new ReaderScrollViewer();
                 _scrollViewer.SetResourceReference(StyleProperty, ScrollViewStyleKey); 
                 _scrollViewer.Name = "ScrollViewer";
                 CommandManager.AddPreviewCanExecuteHandler(_scrollViewer, new CanExecuteRoutedEventHandler(PreviewCanExecuteRoutedEventHandler));
             }
             viewer = _scrollViewer; 
             break;
     } 
     return viewer; 
 }
예제 #13
0
 /// <summary>
 /// Determines whether can switch to specified ViewingMode or not.
 /// </summary>
 private bool CanSwitchToViewingMode(FlowDocumentReaderViewingMode mode) 
 {
     bool canSwitch = false; 
     switch (mode) 
     {
         case FlowDocumentReaderViewingMode.Page: 
             canSwitch = IsPageViewEnabled;
             break;
         case FlowDocumentReaderViewingMode.TwoPage:
             canSwitch = IsTwoPageViewEnabled; 
             break;
         case FlowDocumentReaderViewingMode.Scroll: 
             canSwitch = IsScrollViewEnabled; 
             break;
     } 
     return canSwitch;
 }
 protected virtual new void SwitchViewingModeCore(FlowDocumentReaderViewingMode viewingMode)
 {
 }
 public void SwitchViewingMode(FlowDocumentReaderViewingMode viewingMode)
 {
 }
 protected virtual new void OnSwitchViewingModeCommand(FlowDocumentReaderViewingMode viewingMode)
 {
 }
 internal void RaiseCurrentViewChangedEvent(FlowDocumentReaderViewingMode newMode, FlowDocumentReaderViewingMode oldMode)
 {
     if (newMode != oldMode)
     {
         RaisePropertyChangedEvent(MultipleViewPatternIdentifiers.CurrentViewProperty,
             ConvertModeToViewId(newMode), ConvertModeToViewId(oldMode));
     }
 }
예제 #18
0
 /// <summary> 
 /// Convert object value to FlowDocumentReaderViewingMode.
 /// </summary>
 private bool ConvertToViewingMode(object value, out FlowDocumentReaderViewingMode mode)
 { 
     bool success;
     if (value is FlowDocumentReaderViewingMode) 
     { 
         mode = (FlowDocumentReaderViewingMode)value;
         success = true; 
     }
     else if (value is String)
     {
         String str = (String)value; 
         if (str == FlowDocumentReaderViewingMode.Page.ToString())
         { 
             mode = FlowDocumentReaderViewingMode.Page; 
             success = true;
         } 
         else if (str == FlowDocumentReaderViewingMode.TwoPage.ToString())
         {
             mode = FlowDocumentReaderViewingMode.TwoPage;
             success = true; 
         }
         else if (str == FlowDocumentReaderViewingMode.Scroll.ToString()) 
         { 
             mode = FlowDocumentReaderViewingMode.Scroll;
             success = true; 
         }
         else
         {
             mode = FlowDocumentReaderViewingMode.Page; 
             success = false;
         } 
     } 
     else
     { 
         mode = FlowDocumentReaderViewingMode.Page;
         success = false;
     }
     return success; 
 }
예제 #19
0
 /// <summary>
 /// Switches the current viewing mode. This is analogous to the SwitchViewingModeCommand.
 /// </summary> 
 /// <param name="viewingMode">Viewing mode.</param>
 public void SwitchViewingMode(FlowDocumentReaderViewingMode viewingMode) 
 { 
     OnSwitchViewingModeCommand(viewingMode);
 } 
 public void SwitchViewingMode(FlowDocumentReaderViewingMode viewingMode)
 {
 }