/// <summary>
        /// Initializes a new instance of the <see cref="OoDrawPagesObserver"/> class.
        /// </summary>
        /// <param name="dp">The Draw document.</param>
        /// <param name="doc">The document related accessibility component.</param>
        /// <param name="docWnd">The related document accessible window component.</param>
        public OoDrawPagesObserver(XDrawPagesSupplier dp, OoAccComponent doc, OoAccessibleDocWnd docWnd = null)
        {
            this.PagesSupplier = dp;
            Document           = doc;
            DocWnd             = docWnd;

            // get Zoom and ViewOffset first time
            if (Controller != null)
            {
                if (Controller is XPropertySet)
                {
                    refreshDrawViewProperties((XPropertySet)(Controller));
                }
                // try to get dpi settings from openoffice
                XWindow componentWindow = Controller.ComponentWindow;
                if (componentWindow != null && componentWindow is XDevice)
                {
                    DeviceInfo deviceInfo = (DeviceInfo)((XDevice)componentWindow).getInfo();
                    if (deviceInfo != null)
                    {
                        PixelPerMeterX = deviceInfo.PixelPerMeterX;
                        PixelPerMeterY = deviceInfo.PixelPerMeterY;
                    }
                }
            }
            // register for Zoom and ViewOffset updates
            addVisibleAreaPropertyChangeListener();

            if (this.PagesSupplier != null)
            {
                List <XDrawPage> dpL = OoDrawUtils.DrawDocGetXDrawPageList(dp);

                if (PagesSupplier is unoidl.com.sun.star.frame.XTitle)
                {
                    Title = ((unoidl.com.sun.star.frame.XTitle)PagesSupplier).getTitle();
                }

                Logger.Instance.Log(LogPriority.DEBUG, this, "create DrawPagesObserver for supplier " + dp.GetHashCode() + " width title '" + Title + "' - having " + dpL.Count + " pages");

                //FIXME: Do this if the api enable parallel access
                //Parallel.ForEach(dpL, (drawPage) =>
                //{
                //    OoDrawPageObserver dpobs = new OoDrawPageObserver(drawPage, this);
                //    DrawPageobservers[drawPage] = dpobs;
                //    DrawPages.Add(dpobs);
                //});

                foreach (var drawPage in dpL)
                {
                    OoDrawPageObserver dpobs = new OoDrawPageObserver(drawPage, this);
                    RegisterDrawPage(dpobs);
                }

                XModifyBroadcaster mdfBc = PagesSupplier as XModifyBroadcaster;
                if (mdfBc != null)
                {
                    mdfBc.addModifyListener(eventForwarder);
                }
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="OoAccessibilitySelectionEventArgs"/> class.
 /// </summary>
 /// <param name="source">The corresponding window/document the event is thrown from.</param>
 /// <param name="selectedItems">The selected items.</param>
 /// <param name="type">The accessibility event type resulting in this event.</param>
 public OoAccessibilitySelection(OoAccessibleDocWnd source, List <OoShapeObserver> selectedShapeObservers)
 {
     OnShapeBoundRectChange = new OoShapeObserver.BoundRectChangeEventHandler(shapeBoundRectChangeHandler);
     OnViewOrZoomChange     = new OoDrawPagesObserver.ViewOrZoomChangeEventHandler(shapeBoundRectChangeHandler);
     Source        = source;
     SelectedItems = selectedShapeObservers;
     RefreshBounds();
     registerToEvents();
 }
Esempio n. 3
0
        void tpwndo_WindowMinimized(object sender, OoEventArgs e)
        {
            if (e != null && e.Source != null && e.Source is XAccessible)
            {
                OoAccessibleDocWnd doc = getCorrespondingAccessibleDocForXaccessible(e.Source as XAccessible);

                if (doc != null && doc.MainWindow != null)
                {
                    fireDrawWindowMinimizedEvent(doc);
                }
            }
        }
Esempio n. 4
0
        void tpwndo_WindowActivated(object sender, OoEventArgs e)
        {
            if (e != null && e.Source != null && e.Source is XAccessible)
            {
                OoAccessibleDocWnd doc = getCorrespondingAccessibleDocForXaccessible(e.Source as XAccessible);

                if (doc != null && doc.MainWindow != null)
                {
                    fireDrawWindowActivatedEvent(doc);
                }
                else
                {
                    var docObj = OoAccessibility.IsDrawWindow(e.Source as XAccessible);
                    if (docObj != null && !(docObj is bool))
                    {
                        registerNewDrawWindow(e.Source as XAccessible, docObj);
                    }
                }
            }
        }